2017-10-05 103 views
0

我正在使用python 2.7.13和
我在安裝到自定義目錄中時導入ruamel.yaml時遇到問題。在自定義目錄中安裝ruamel.yaml時導入Python錯誤

**ImportError: No module named ruamel.yaml** 

使用的命令如下:

pip install --target=Z:\XYZ\globalpacks ruamel.yaml 

我已經此自定義目錄添加到PYTHONPATH環境變量
,並且還具有在該位置處的文件.pth與以下行
Z:\XYZ\globalpacks\anotherApp
Z:\XYZ\globalpacks\ruamel

還有另一個應用程序安裝類似於t他上面的設置
它工作。

我在這裏錯過了什麼?

PS:當我在站點包文件夾
也是它在自定義文件夾工作時,我在ruamel文件夾中創建一個初始化 .py文件
安裝它的工作原理。

編輯:

由於我們的內容製作軟件使用Python 2.7,我們只限於
使用same.We選擇對所有
機,並設置進口路徑安裝Python的同一版本指向共享的
網絡驅動器上的模塊/應用程序。
像上面提到的那樣,它可以在python的網站包中使用,但不能在網絡驅動器上使用
這是在PYTHONPATH env變量。
ruamel.yaml-**.nspkg.pthruamel.ordereddict-*-nspkg.pth
盡職盡責installed.Sorry沒有給予完整的詳細信息earlier.Your輸入
都大加讚賞。

回答

0

您應該從.pth文件中刪除第二行,因爲包名稱爲ruamel.yaml(即名稱空間包),而不是ruamel。該行會干擾正確的加載,並且pip install應該已經創建適當的ruamel.yaml-0.15.34-py3.6-nspkg.pth文件。

在Windows上我不能方便地測試這一點,但這裏是在Linux上是什麼在起作用:

$ mkdir /tmp/globalpacks 
$ mktmpenv 
Using real prefix '/opt/python/3.6.3' 
New python executable in /home/venv/tmp-10a2a253b4063883/bin/python 
Installing setuptools, pip, wheel...done. 
This is a temporary environment. It will be deleted when you run 'deactivate'. 
(tmp-10a2a253b4063883) $ pip install --target /tmp/globalpacks ruamel.yaml 
Collecting ruamel.yaml 
    Using cached ruamel.yaml-0.15.34-cp36-cp36m-manylinux1_x86_64.whl 
Installing collected packages: ruamel.yaml 
Successfully installed ruamel.yaml-0.15.34 
(tmp-10a2a253b4063883) $ python 
Python 3.6.3 (default, Oct 5 2017, 07:00:09) 
[GCC 4.8.4] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import ruamel.yaml 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ModuleNotFoundError: No module named 'ruamel' 
>>> import sys 
>>> sys.path.insert(0, '/tmp/globalpacks') 
>>> import ruamel.yaml 
>>> >>> print(ruamel.yaml.__version__) 
0.15.34 

設置PYTHONPATH應該工作一樣sys.path


真正的問題將是當然的無論你是否真的在磁盤空間上非常緊張,以至於你需要擁有那個(共享的)globalpacks目錄。如果沒有,你應該總是在你創建和使用的每個virtualenv中安裝像ruamel.yaml這樣的軟件包。這樣,如果升級軟件包並出錯,那麼同時打破所有程序的可能性就會小得多。如果它是新的virtualenvs的安裝速度,那麼你應該看看devpi以在本地緩存包。如果你對每個virtualenv都有本​​地化的東西,那麼當你完成它時,你可以把它扔掉,而不是在你的globalpacks目錄中仍然存在指向ruamel.yaml(或任何其他包)的virtualenv時跟蹤自己。 (如果你使用的是,爲了globalpacks不弄亂安裝Python的site-packages,你應該開始使用virtualenv

+0

我已刪除從.pth文件中的條目,但錯誤仍然存​​在'從ruamel.yaml進口YAML' \t'ImportError:No module named yaml' –

+0

基於這個小小的反饋,我不打算設置一臺機器來測試這個Windows並安裝和過時的2.7版本,猜測你做了什麼。我不知道你是否正在使用virtualenv,不管你是否像我一樣嘗試運行命令,以及確切的輸出是什麼。我不知道在安裝後你的'globalpacks'目錄中是否有'ruamel.yaml - **。nspkg.pth'文件,也不知道你爲什麼不把它安裝到virtualenv的站點包中。請使用所有這些信息更新(編輯)您的帖子(當您這樣做時,請勿使用**編輯:**) – Anthon