2017-10-05 397 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