我同时安装了Canopy和Anaconda。我的默认值是Canopy,但是当我启动screen
时,我得到了Anaconda。这对我来说大部分时间都很有用,但这次我需要在screen
中使用 Canopy .
我认为解决方案是创建一个虚拟环境,我是这样做的:
cd /path/to/project
virtualenv my_project
问题:虚拟环境看不到我安装的Python模块,如numpy。
这是我的其余过程:
user@GPU5:~/path/to/my_project$ screen
user@GPU5:~/path/to/my_project$ source activate lstm_project
(lstm_project) user@GPU5:~/path/to/my_project$ python
Enthought Canopy Python 2.7.6 | 64-bit | (default, Sep 15 2014, 17:36:10)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named numpy
以下是 sys.path 的输出:
>>> print sys.path
['', '/user/path/to/my_project',
'/opt/enthought/canopy-1.5.1/appdata/canopy-1.5.1.2730.rh5-x86_64/lib/python27.zip',
'/opt/enthought/canopy-1.5.1/appdata/canopy-1.5.1.2730.rh5-x86_64/lib/python2.7',
'/opt/enthought/canopy-1.5.1/appdata/canopy-1.5.1.2730.rh5-x86_64/lib/python2.7/plat-linux2',
'/opt/enthought/canopy-1.5.1/appdata/canopy-1.5.1.2730.rh5-x86_64/lib/python2.7/lib-tk',
'/opt/enthought/canopy-1.5.1/appdata/canopy-1.5.1.2730.rh5-x86_64/lib/python2.7/lib-old',
'/opt/enthought/canopy-1.5.1/appdata/canopy-1.5.1.2730.rh5-x86_64/lib/python2.7/lib-dynload',
'/user/path/to/my_project/lib/python2.7/site-packages']
如何让我的 virtualenv 识别我在全球安装的软件包?
默认情况下virtualenv
将忽略系统软件包。创建环境时,请执行
$ virtualenv my_project --system-site-packages
在同一台机器上处理多个项目可能会导致项目中使用但不在其他项目中使用的某些 Python 包之间发生冲突。
这就是人们使用虚拟环境的主要原因。
发生的情况是,您为每个项目创建一个环境,并仅在该环境中安装依赖项,这样做将避免包冲突,这也是跟踪每个项目需要运行的包的好方法,所以如果其他人(甚至您)想在另一台计算机上运行项目, 安装所有需要的软件包(仅此而已)来运行它非常容易。
要回答您的问题,如果要在虚拟环境中安装所有全局包,请执行以下操作:
- 打开一个终端(如果您在终端内,请停用虚拟环境);
- 执行:
pip freeze > requirements.txt
(这将创建一个包含所有全局 python 包的.txt文件); - 激活要安装软件包的环境;
- 执行
pip install -r requirements.txt
(确保与要求位于同一文件夹中.txt。
我希望我没有让你太困惑,如果你有任何问题,请随时问。