溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Tribler過程中遇到的Python問題有哪些

發(fā)布時間:2022-01-13 09:04:02 來源:億速云 閱讀:146 作者:iii 欄目:互聯(lián)網(wǎng)科技

本篇內(nèi)容主要講解“Tribler過程中遇到的Python問題有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“Tribler過程中遇到的Python問題有哪些”吧!

【如何導(dǎo)入包】

兩點搞定,就可以import了:
 

  • package的當(dāng)前目錄下要有__init__.py文件,表示它自己是個package

  • package的parent目錄要在PYTHONPATH中

打開文件的路徑和導(dǎo)入模塊的路徑

    打開文件用的“路徑”和導(dǎo)入模塊的“路徑”是不一樣的。
    打開文件的路徑是你主程序文件(.py)啟動時所在的路徑,這個當(dāng)前路徑是一個確定的唯一的路徑,例如,當(dāng)使用PythonWin打開D:\p2pEnv\mainbranch\Tribler\Tools\createlivestream.py時:

import os
print os.getcwd()
'D:\\p2pEnv\\mainbranch\\Tribler\\Tools'
# 可以如下切換當(dāng)前目錄
os.chdir(r'C:\Python27\Lib')

       模塊搜索的路徑是通過sys.path指定的路徑,該變量初始化時默認包含了
 

  • 輸入腳本所在目錄(即執(zhí)行文件的當(dāng)前目錄)

  • PYTHONPATH目錄

  • Python安裝目錄

       使用sys.path.append(modulepath)添加的路徑只在運行時有效,下次運行編譯器時就不存在了,這里modulepath可以是包含.py/pyc/pyo/pyw等文件的zip或egg。

import sys
print sys.path 
['C:\\', 'C:\\WINDOWS\\system32\\python27.zip', 'C:\\Python27\\DLLs', 'C:\\Python27\\lib', 'C:\\Python27\\lib\\plat-win', 'C:\\Python27\\lib\\lib-tk', 'C:\\Python27\\Lib\\site-packages\\Pythonwin', 'C:\\Python27', 'C:\\Python27\\lib\\site-packages', 'C:\\Python27\\lib\\site-packages\\win32', 'C:\\Python27\\lib\\site-packages\\win32\\lib', 'C:\\Python27\\lib\\site-packages\\wx-2.8-msw-unicode']

【__init__.py文件

__init__.py文件:導(dǎo)入包之前都會調(diào)用該文件

       只要第一次導(dǎo)入包中的任何部分,就會執(zhí)行文件__init__.py中的代碼。這個文件可以為空,但也可以包含可執(zhí)行特定于該包的初始化工作的代碼。在import語句執(zhí)行期間,遇到的所有__init__.py文件都會執(zhí)行。因此,語句import Graphics.Primitive.fill將會首先執(zhí)行Graphics目錄中的__init__.py文件,然后執(zhí)行Primitive目錄中的__init__.py文件。

       在使用包時,處理下面這條語句時需要小心:
 

from Graphics.Primitive import *

       使用該語句的程序員通常希望將與某個包相關(guān)聯(lián)的所有子模塊導(dǎo)入到當(dāng)前命名空間中。但是,由于各個子系統(tǒng)之間的文件名約定不同(特別是在區(qū)分大小寫上),Python無法準確地確定各個模塊的具體內(nèi)容。結(jié)果,該語句只會導(dǎo)入在Primitive目錄的__init__.py文件中定義的所有名稱。這個列表應(yīng)該在包的__init__.py文件中定義,例如:
 

# Graphics/Primitive/__init__.py
__all__ = ["lines", "text", "fill"]

       因此,可以在__init__.py文件中定義__all__,通過該定義,模塊(或包)可以精確控制導(dǎo)入的名稱集合,比如module.py中
 

__all__ = ["bar", "SomeClassName", "SomeProperty", "SomeFunction"]

單獨導(dǎo)入包名稱不會導(dǎo)入包中所包含的子模塊,比如
 

import somepkg
somepkg.somemodule(xx) #失敗

但由于import somepkg會執(zhí)行somepkg目錄下的__init__.py文件,所有如果__init__.py中有from . import somemodule之類的語句,則somepkg.somemodule(xx) 就可以正確執(zhí)行了。

【文件格式

       python并非完全是解釋性語言,它是有編譯的。python程序執(zhí)行時通常是先把源碼.py文件編譯成.pyc或者.pyo,然后由python的虛擬機執(zhí)行。相對于.py文件,編譯得到的.pyc和.pyo從本質(zhì)上講和.py沒有太大區(qū)別,只是會提高當(dāng)前模塊的加載速度,但并沒有提高代碼的執(zhí)行速度。通常情況下不用主動去編譯.py文件,文檔上說只要調(diào)用了import model那么model.py就會自動被先編譯成model.pyc然后再加載。


.pyc:預(yù)編譯過的.py文件
.pyo:優(yōu)化的預(yù)編譯過的.py文件
.pyw

Windows下.py文件用 python.exe 運行,.pyw文件用 pythonw.exe 運行

 跟 python.exe 比較起來,pythonw.exe 有以下的不同:
 

  • 執(zhí)行時不會彈出控制臺窗口(也叫 DOS 窗口)

  • 所有向原有的 stdout 和 stderr 的輸出都無效

  • 所有從原有的 stdin 的讀取都只會得到 EOF

.pyw 格式是被設(shè)計來運行開發(fā)完成的純圖形界面程序的。純圖形界面程序的用戶不需要看到控制臺窗口。

到此,相信大家對“Tribler過程中遇到的Python問題有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI