【发布时间】:2017-10-29 11:49:35
【问题描述】:
我在尝试导入通过 pip 在我的项目目录中安装的模块时遇到了 virtualenv 问题(从虚拟 env. 目录开始)。
我的项目结构是;
\Project
..\dev (virtual env)
..test.py
我已经在我的虚拟环境上下文中使用 pip 安装了 cement,但是当我尝试包含它时出现导入错误。
从我的项目文件夹的根目录;
Project$ source dev/bin/activate
(dev) Project$ pip list
cement (2.10.2)
pip (9.0.1)
setuptools (36.6.0)
wheel (0.30.0)
一切看起来都不错。
(dev) Project$ python
Python 2.7.10 (default, Feb 7 2017, 00:08:15)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from cement.core.foundation import CementApp
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "cement.py", line 1, in <module>
from cement.core.foundation import CementApp
ImportError: No module named core.foundation
>>> quit()
于是我 cd 进入虚拟环境目录;
(dev) Project$ cd dev/
(dev) dev$ python
Python 2.7.10 (default, Feb 7 2017, 00:08:15)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from cement.core.foundation import CementApp
>>>
在 virtualenv 目录中导入工作正常。
这是正确的行为吗?我需要将我的 src 文件存储在 virtualenv 目录中吗?因为我的印象是我的应用程序可以位于 virtualenv 目录之外,但是一旦在 virtualenv 中处于活动状态就可以访问已安装的模块?
【问题讨论】:
-
不,这不是正确的行为。激活 virtualenv 后,您应该能够从任何目录运行
python,甚至在您的项目之外,并且from cement.core.foundation import CementApp应该 工作。您绝对不能将源文件移动到 virtualenv 目录中。我想知道您的 virtualenv 目录是否可能以某种方式损坏。我建议重新创建它,这应该很容易。 -
感谢您的见解@janos,我重新创建了虚拟环境并解决了问题,虚拟环境一定不是第一次正确创建。再次感谢!
标签: python virtualenv