2017-04-17 80 views
1

我使用的是沒有管理PRIVS安裝窗戶python36。python36._pth是不被認可

我創建了一個簡單的腳本,tester.py

import petl as etl 
fnar = [['foo','bar'], 
     ['weebl','woobl']] 
print(etl.fromcolumns(fnar).lookall()) 

在命令行上,我安裝petl到一個目錄。

pip install petl -t lib

當我檢查,它在那裏。

2017-04-17 06:27 PM <DIR>   petl 
2017-04-17 06:27 PM <DIR>   petl-1.1.1.dist-info 

我想用該目錄來找到我petl,所以我創建了一個python36._pth file

. 
lib 
import site 

當我嘗試運行我的腳本,它不能找到它!

>py tester.py 
Traceback (most recent call last): 
    File "tester.py", line 2, in <module> 
    import petl as etl 
ModuleNotFoundError: No module named 'petl' 

什麼是我誤解讓._pth文件工作?

+0

哪裏是你的'._pth'文件?你的腳本在哪裏?什麼是您的實際Python可執行文件和您的Python dll的名稱以及它們的居住地點? –

+0

爲什麼您使用的不是普通.pth文件或'PYTHONPATH'一個'._pth'文件,該文件是爲Python嵌入,? – eryksun

+0

您正在創建覆蓋整個Python'sys.path'的'.pth'。相反,你需要創建一個爲['site.py'文件]中描述(https://docs.python.org/3/library/site.html#module-site), – martineau

回答

0

不幸的是,如果它們被放置在由python -m site所示的標準位置中的一個,其他比當前工作目錄.pth文件只得到評估。我不記得細節,但我認爲Python通過這些標準位置先運行,運行它發現有任何.pth文件,然後將''(當前工作目錄)的sys.path開始之後。這意味着只有在從腳本啓動腳本的目錄中添加.pth文件,才能擴展路徑。

我知道將相對位置添加到系統路徑的唯一方法是將它們設置在主腳本的頂部,在import語句之前。在這種情況下,你可以用sys.path.append(os.path.join(os.path.dirname(__file__), 'lib'))之類的東西來做到這一點。