virtualenv不会从lib/python目录复制所有.py文件 [英] virtualenv doesn't copy all .py files from the lib/python directory

查看:186
本文介绍了virtualenv不会从lib/python目录复制所有.py文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

也许我不清楚virtualenv的工作方式,但是如果我使用--always-copy标志运行virtualenv,我希望/lib/python中的所有文件都将被复制.

Maybe I'm no clear on how virtualenv works, but if I run virtualenv with the --always-copy flag, I'm expecting all the files inside /lib/python to be copied.

所以我创建了一个虚拟环境

So I create a virtual env

virtualenv -v --always-copy myenv

其输出是

Creating myenv/lib/python2.7
Symlinking Python bootstrap modules
  Copying to myenv/lib/python2.7/config
  Copying to myenv/lib/python2.7/lib-dynload
  Copying to myenv/lib/python2.7/os.py
  Ignoring built-in bootstrap module: posix
  Copying to myenv/lib/python2.7/posixpath.py
  Cannot import bootstrap module: nt
  Copying to myenv/lib/python2.7/ntpath.py
  Copying to myenv/lib/python2.7/genericpath.py
  Copying to myenv/lib/python2.7/fnmatch.py
  Copying to myenv/lib/python2.7/locale.py
  Copying to myenv/lib/python2.7/encodings
  Copying to myenv/lib/python2.7/codecs.py
  Copying to myenv/lib/python2.7/stat.py
  Copying to myenv/lib/python2.7/UserDict.py
  File myenv/lib/python2.7/lib-dynload/readline.so already exists
  Copying to myenv/lib/python2.7/copy_reg.py
  Copying to myenv/lib/python2.7/types.py
  Copying to myenv/lib/python2.7/re.py
  Copying to myenv/lib/python2.7/sre.py
  Copying to myenv/lib/python2.7/sre_parse.py
  Copying to myenv/lib/python2.7/sre_constants.py
  Copying to myenv/lib/python2.7/sre_compile.py
  File myenv/lib/python2.7/lib-dynload/zlib.so already exists
  Copying to myenv/lib/python2.7/warnings.py
  Copying to myenv/lib/python2.7/linecache.py
  Copying to myenv/lib/python2.7/_abcoll.py
  Copying to myenv/lib/python2.7/abc.py
  Copying to myenv/lib/python2.7/_weakrefset.py
Creating myenv/lib/python2.7/site-packages
Writing myenv/lib/python2.7/site.py
Writing myenv/lib/python2.7/orig-prefix.txt
Writing myenv/lib/python2.7/no-global-site-packages.txt
Creating parent directories for myenv/include
Copying to myenv/include/python2.7
Creating myenv/bin
New python executable in myenv/bin/python
Changed mode of myenv/bin/python to 0755
Copying to myenv/bin/python2
Copying to myenv/bin/python2.7
Testing executable with myenv/bin/python -c "import sys;out=sys.stdout;getattr(out, "buffer", out).write(sys.prefix.encode("utf-8"))"
Got sys.prefix result: u'/home/rbouza/myenv'
Creating myenv/lib/python2.7/distutils
Writing myenv/lib/python2.7/distutils/__init__.py
Writing myenv/lib/python2.7/distutils/distutils.cfg
Installing setuptools, pip...
  Running command /home/rbouza/myenv/bin/python -c "import sys, pip; sys...d\"] + sys.argv[1:]))" setuptools pip
  Ignoring indexes: https://pypi.python.org/simple/
  Downloading/unpacking setuptools
  Downloading/unpacking pip
  Installing collected packages: setuptools, pip
  Successfully installed setuptools pip
  Cleaning up...
...Installing setuptools, pip...done.
Writing myenv/bin/activate
Writing myenv/bin/activate.fish
Writing myenv/bin/activate_this.py
Writing myenv/bin/activate.csh

然后我进入lib目录

cd myenv/lib/python2.7

列出所有文件

_abcoll.py   config        fnmatch.pyc      locale.py                    os.pyc     
    site.py            sre_parse.py   types.pyc       _weakrefset.pyc
_abcoll.pyc  copy_reg.py   genericpath.py   locale.pyc                   posixpath.py   site.pyc           sre_parse.pyc  UserDict.py
abc.py       copy_reg.pyc  genericpath.pyc  no-global-site-packages.txt  posixpath.pyc  sre_compile.py     sre.py         UserDict.pyc
abc.pyc      distutils     lib-dynload      ntpath.py                    re.py          sre_compile.pyc    stat.py        warnings.py
codecs.py    encodings     linecache.py     orig-prefix.txt              re.pyc         sre_constants.py   stat.pyc       warnings.pyc
codecs.pyc   fnmatch.py    linecache.pyc    os.py                        site-packages  sre_constants.pyc  types.py       _weakrefset.py

确切是:50个(包括目录),但是当我计算python安装目录中的文件/目录时,我得到200+(仅1个级别,不计算站点软件包,等等)

Which is exactly: 50 including directories, but then when I count the files/dirs in the python installation directory I get 200+ (just 1 level, not counting site-packages, etc)

有人知道这是为什么吗?

Does anybody knows why is this the behavior?

什至没有__future__.py.

谢谢.

推荐答案

您不会期望virtualenv为您的python库造成不必要的完全重复.

You wouldn't expect virtualenv make unnecessary full duplicates for your python libraries.

您的虚拟Python仍然会从根Python环境中引用和读取库文件. virtualenv的作用是在虚拟环境中设置新的库安装路径,因此进一步的库安装将限制在该虚拟环境中.

Your Virtual Python still refers and reads library files from your root Python environment. What virtualenv does is it sets your new library install path in the virtual env, so further library installation will be confined in this virtual env.

--always-copy

此选项仅使virtualenv复制必要的文件,而不是symlink.

This option only makes virtualenv copy necessary files rather than symlink.

这篇关于virtualenv不会从lib/python目录复制所有.py文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆