我使用此命令构建了我的虚拟环境:
virtualenv env --distribute --no-site-packages
然后我用pip在env中安装了几个模块(django等),问题是当我想在第二台机器上运行代码时它不起作用,这就是我所做的:
visgean@rewitaqia:~/scripty/project_name$ source ./env/bin/activate
(env)visgean@rewitaqia:~/scripty/project_name$ python
Python 2.7.1+ (r271:86832, Sep 27 2012, 21:12:17)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.__file__
'/home/visgean/scripty/project_name/env/lib/python2.7/site-packages/django/__init__.pyc'
但是当我想在第二台机器上运行它时:
(env)user@debian:~/project_name$ python
Python 2.6.6 (r266:84292, Dec 27 2010, 00:02:40)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named django
>>>
我出现了狂野错误!第一台机器是ubuntu,第二台机器是ubuntu。在/home/user/project_name/env/lib/python2.7中似乎有一些断开的链接,这是问题吗?如果是这样,我应该如何预防/修复它?
答案 0 :(得分:2)
如果您只是将virtualenv复制到第二台机器,您可能会遇到一些问题。来自virtualenv网站:
通常,环境与特定路径相关联。那意味着你 无法移动环境或将其复制到另一台计算机。您 可以使用以下命令修复环境以使其可重定位:
$ virtualenv --relocatable ENV
这会产生一些文件 由setuptools创建或分发使用相对路径,并将 更改所有脚本以使用activate_this.py而不是使用 Python解释器的位置以选择环境。
注意:在将任何软件包安装到软件包之后,必须运行此软件 环境。如果您使环境可重定位,则安装一个 新包,你必须再次运行virtualenv --relocatable。
答案 1 :(得分:0)
我刚注意到我在第二台机器上确实有一个错误的python版本 - debian没有python2.7,安装2.7和pip for是解决方案