我有一台笔记本电脑。所以我从我的Work PC .virtualenvs/
目录复制到我的NAS,然后将其复制回我的新笔记本电脑。
我安装了virtualenv
和virtualenvwrapper
,但我无法让我的虚拟环境正常工作。这就是我最初得到的:
chris@chris-amilo ~ $ workon iwidget
virtualenvwrapper.user_scripts could not run "/home/chris/.virtualenvs/preactivate": [Errno 13] Permission denied
virtualenvwrapper.user_scripts could not run "/home/chris/.virtualenvs/iwidget/bin/preactivate": [Errno 13] Permission denied
然后我对那些文件做了一个chmod + x。虽然我之后可以改变这种环境,但是看不到图书馆。
我也明白了:
chris@chris-amilo ~ $ ./.virtualenvs/iwidget/bin/activate
bash: ./.virtualenvs/iwidget/bin/activate: Permission denied
此外,以下显示虽然我可以workon
某些env,但是没有任何内容可以导入:(在我执行chmod + x以预先激活文件之后)
chris@chris-amilo ~ $ workon iwidget
(iwidget)chris@chris-amilo ~ $ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pytz
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named pytz
>>>
(iwidget)chris@chris-amilo ~ $ ls .virtualenvs/iwidget/lib/python2.7/site-packages/py
py4j/ pytz/
py4j-0.8.1-py2.7.egg-info/ pytz-2014.2-py2.7.egg-info/
python_dateutil-2.2-py2.7.egg-info/
我该如何解决这个问题?
答案 0 :(得分:1)
移动virtualenvs很棘手。在新机器上从头开始重建它们是一个更好的选择。如果您使用的是需求文件,则这很简单:只需pip install -r requirements.txt
即可。如果您没有使用,请使用pip freeze > requirements.txt
在旧计算机上创建。
答案 1 :(得分:1)
如错误所示,您对这些脚本没有执行(运行)权限。我遇到了类似的问题,但只针对.virtualenvs / preactivate文件。
chmod u+x ~/.virtualenvs/*
为我做了诀窍,但我看到你的回答中也注意到了。它可能与从不同的机器迁移你的virtualenvs有关吗?
您可能需要为〜/ .virtualenvs / iwidget / bin / *
做同样的事情使用virtualenvwrapper,您不需要在文件夹本身中使用activate脚本,但是如果您想这样做,则必须像这样调用命令:
. .virtualenvs/iwidget/bin/activate
注意前面的点?那个点实际上是一个命令,尽管很容易被忽视,它用于激活env;激活脚本不能自己运行,因为文件的前两行会告诉你。命令source
是点的别名。
但是workon iwidget
应该照顾所有的爵士乐。
至于导入问题,您可能希望在尝试导入之前在env中运行pip install pytz
。要查看它是否在您的环境中,请输入:pip freeze|grep pytz
。
答案 2 :(得分:0)
从项目中输入以下命令:
your_project$:source env/bin/activate
此处env
是您的virtualenv目录,将在此命令后创建:$:virtualenv env
运行第一个命令后,您会看到:(env)user@localhost:~/path_to_your_project$
完成。