Python文件无法识别安装在虚拟环境中的库

时间:2018-02-14 10:13:11

标签: python python-3.x pip virtualenv

解释

我之前发过一篇文章,但由于它蜿蜒曲折并得出了错误的结论,我将其删除了。

我在下面运行的命令本身没有意义,但是当我在代码路径下运行此文件的其他脚本时,这个文件最终会导致问题。

我安装了Python 3.5.1,PIPvirtualenv

如果我激活我的虚拟环境并运行pip list,我会收到以下内容。

future (0.16.0)
generateDS (2.20a0)
lxml (3.6.4)
mysql-connector (2.1.4)
pefile (2016.3.28)
pip (9.0.1)
PyInstaller (3.2)
pypiwin32 (219)
pypyodbc (1.3.3)
python-dateutil (2.5.3)
setuptools (38.5.1)
six (1.10.0)
wheel (0.30.0)

现在,如果我运行virtualenv_foobar_20180214093433\Scripts\process_includes.py

它会立即抛出此错误。

Traceback (most recent call last):
  File "C:\Code\site\Python\FooBar\virtualenv_foobar_20180214093433\Scripts\process_includes.py", line 28, in <module>
    from lxml import etree
ImportError: No module named lxml

该文件中的相关代码是这个。

from copy import deepcopy
from lxml import etree

try:
    from gds_inner_name_map import Inner_name_map
except ImportError:
    Inner_name_map = None

问题

为什么会这样?我已经激活了虚拟环境,并且pip列出了它正在寻找的库。

额外信息

我安装了Python 2和3,默认情况下都不在Windows路径中。

print(platform.python_version()) 置于 process_includes.py内打印Python 2版本,尽管我在虚拟环境中。

process_includes.py将Python 3作为其shebang保存在虚拟环境中。

更新

我不知道为什么尽管Python {3}中没有Python 2或3,都在Python 3虚拟环境中,直接运行Python文件会导致它被处理通过Python 2。

最后,我更新了我的脚本,以明确引用虚拟环境PATH,这有点痛苦但不是世界末日。

0 个答案:

没有答案