2011-05-06 137 views
6

我想在Ubuntu 10.04上用Python 2.6.5设置virtualenv,但有一些问题。问题设置Virtualenv

无需安装的virtualenv和virtualenv中包装与PIP后,我运行命令:virtualenv中的mysite-ENV --verbose

我得到以下错误:

Creating mysite-env/lib/python2.6 
Symlinking Python bootstrap modules 
    Symlinking mysite-env/lib/python2.6/lib-dynload 
    Symlinking mysite-env/lib/python2.6/config 
    Symlinking mysite-env/lib/python2.6/os.py 
    Ignoring built-in bootstrap module: posix 
    Symlinking mysite-env/lib/python2.6/posixpath.py 
    Cannot import bootstrap module: nt 
    Symlinking mysite-env/lib/python2.6/ntpath.py 
    Symlinking mysite-env/lib/python2.6/genericpath.py 
    Symlinking mysite-env/lib/python2.6/fnmatch.py 
    Symlinking mysite-env/lib/python2.6/locale.py 
    Symlinking mysite-env/lib/python2.6/encodings 
    Symlinking mysite-env/lib/python2.6/codecs.py 
    Symlinking mysite-env/lib/python2.6/stat.py 
    Symlinking mysite-env/lib/python2.6/UserDict.py 
    Symlinking mysite-env/lib/python2.6/lib-dynload/readline.so 
    Symlinking failed, copying to mysite-env/lib/python2.6/lib-dynload/readline.so 
Traceback (most recent call last): 
    File "/usr/local/bin/virtualenv", line 9, in <module> 
    load_entry_point('virtualenv==1.6.1', 'console_scripts', 'virtualenv')() 
    File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 795, in main 
    never_download=options.never_download) 
    File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 886, in create_environment 
    site_packages=site_packages, clear=clear)) 
    File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 1020, in install_python 
    copy_required_modules(home_dir) 
    File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 974, in copy_required_modules 
    copyfile(filename, dst_filename) 
    File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 414, in copyfile 
    copyfileordir(src, dest) 
    File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 391, in copyfileordir 
    shutil.copy2(src, dest) 
    File "/usr/lib/python2.6/shutil.py", line 99, in copy2 
    copyfile(src, dst) 
    File "/usr/lib/python2.6/shutil.py", line 53, in copyfile 
    fdst = open(dst, 'wb') 
IOError: [Errno 20] Not a directory: 'mysite-env/lib/python2.6/lib-dynload/readline.so' 

如果我再次运行,我得到以下内容:

Directory mysite-env/lib/python2.6 already exists 
    Symlinking Python bootstrap modules 
     Ignoring built-in bootstrap module: posix 
     Cannot import bootstrap module: nt 
     Symlinking mysite-env/lib/python2.6/lib-dynload/readline.so 
     Symlinking mysite-env/lib/python2.6/copy_reg.py 
     Symlinking mysite-env/lib/python2.6/types.py 
     Symlinking mysite-env/lib/python2.6/re.py 
     Symlinking mysite-env/lib/python2.6/sre.py 
     Symlinking mysite-env/lib/python2.6/sre_parse.py 
     Symlinking mysite-env/lib/python2.6/sre_constants.py 
     Symlinking mysite-env/lib/python2.6/sre_compile.py 
     Ignoring built-in bootstrap module: zlib 
     Symlinking mysite-env/lib/python2.6/warnings.py 
     Symlinking mysite-env/lib/python2.6/linecache.py 
     Symlinking mysite-env/lib/python2.6/_abcoll.py 
     Symlinking mysite-env/lib/python2.6/abc.py 
    Creating mysite-env/lib/python2.6/site-packages 
    Writing mysite-env/lib/python2.6/site.py 
    Writing mysite-env/lib/python2.6/orig-prefix.txt 
    Creating parent directories for mysite-env/include 
    Symlinking mysite-env/include/python2.6 
    Creating mysite-env/bin 
    New python executable in mysite-env/bin/python 
    Changed mode of mysite-env/bin/python to 0755 
    Testing executable with mysite-env/bin/python -c "import sys; print(sys.prefix)" 
    ERROR: The executable mysite-env/bin/python is not functioning 
    ERROR: It thinks sys.prefix is u'/usr' (should be '/vagrant/mysite-env') 
    ERROR: virtualenv is not compatible with this system or executable 

任何想法如何解决这个问题?谢谢!

+0

感谢您发布此信息。它完全咬我的屁股试图设置流浪汉审查。现在我已将/ var/www作为目录,它工作正常! – 2014-08-29 18:53:33

回答

0

我还没有遇到这个问题,但我已经亲自从使用virtualenv切换到pythonbrew。对同一个问题,pythonbrew是一个不同的解决方案;它在Ruby社区中更像rvm:它从零开始构建了完全自包含的Python版本,在$HOME/.pythonbrew下;然后,它提供了shell功能,允许您轻松地从一个切换到另一个(为您编辑路径等)。它不像virtualenv那样轻便,但它也不会搭载在系统Python上,因此整个符号链接问题就会消失。您也可以安装多个Python版本,即使它们未安装在基本系统中。

当然,您的里程可能会有所不同,但pythonbrew对我来说一直很好。

+1

请注意,您可以将virtualenv用于安装在系统上的任何Python版本,并且可以使用--not-site-packages忽略系统范围的网站软件包。加上virtualenvwrapper,它变得非常干净整洁。布赖恩是正确的,pythonbrew可以让你安装一个不在那里开始的python版本。 – Henry 2011-05-06 14:38:57

+0

同意。我并不是故意暗示virtualenv无法为多个版本的Python创建环境;我一直这么做。但它与系统中已有的东西有着根本的联系,而pythonbrew则不是。每种方法都有其优点和缺点。这些天,我碰巧喜欢pythonbrew。因人而异。 – 2011-05-06 14:42:03

2

发生此错误是因为您使用的virtualenv.py文件与您正在使用的python版本不兼容。 对于python2.7,您需要从virtualenv.org网站中下载二进制文件,然后编译它们使用

python setup.py install 

安装后使用已安装的二进制文件(不是virtualenv.py文件)由

virtualenv --no-site-packages <path to virtual env directory>/env/ 
5

创建虚拟环境看起来似乎已经有点既然你问这个。/vagrant目录的Virtualbox文件驱动程序无法识别virtualenv使用很多的符号链接。

这可以用一个简单的

mybox:/vagrant$ ln -s ~/.bashrc 
ln: failed to create symbolic link ./.bashrc': Protocol error` 

更新来最好的证明:

因为流浪汉的符号链接不兼容&的virtualenv,我流浪汉盒/实例是任务/项目特定的(仅1的virtualenv) 。因此,在颠沛流离的主机端/实例文件夹我会保持一个简短的脚本安装Python &的virtualenv,然后做

pip install -r /vagrant/requirement 

更多文档可以在这里找到。 https://docs.vagrantup.com/v2/provisioning/basic_usage.html

与适当的bash if核对(蟒蛇存在,并/家庭/流浪者/ env的存在),你可以提供你的盒子一次,然后附加一个电话来激活您的〜/ env的安装,这样,当你登录,你已经安装好了,准备好了。

+0

这是什么解决方案? – stephenmurdoch 2014-09-16 16:18:22

+0

我在手机上如此简洁。对于流浪汉系统,最好是吉普pip需求文件并将虚拟env放在主目录下。你可以使用点缓存标志存储在你的vagrant共享目录中,而不是venv本身 – David 2014-09-17 03:41:43

+0

拼写错误 - 不要吉普车,本地缓存可以保存到'/ vagrant/py_fast'或更好的共享目录http:// pip。 readthedocs.org/en/latest/user_guide.html#fast-local-installs,这样如果你需要销毁/重建,你可以删除pypi除了更新以外的任何东西(现实是你不会经常更新,如果你有一个需求文件)。 – David 2014-09-20 06:34:38

1

这个问题已经有几个答案,但我想分享我的解决方案,以防万一它有助于下一个人。

我在哪里运行命令的问题。我在/ vagrant共享文件夹中运行了virtualenv env命令。那是我的错误。当我回到我的HOME目录时,然后运行virtualenv env,一切正常。

+0

你如何确保位于/ vagrant的python应用程序在您的主目录中使用虚拟env?我试图从/ inside/vagrant目录中运行时在/ home/vagrant/env目录中查看tox – stephenmurdoch 2014-09-16 20:19:42

+0

我运行“source〜/ venv_name/bin/activate” 该应用程序代码位于“/ vagrant/webapps/app_name“ 我从来没有用过tox,但是这或者我认为你可以../../直到你在那里? – 2014-09-16 23:20:00