virtualenv不会从lib/python目录复制所有.py文件 [英] virtualenv doesn't copy all .py files from the lib/python directory
问题描述
也许我不清楚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屋!