Ubuntu符号链接本地/lib->;上的virtualenv/自由党?

Ubuntu符号链接本地/lib->;上的virtualenv/自由党?,ubuntu,virtualenv,Ubuntu,Virtualenv,如果我在Ubuntu 16.04(Python2)上创建一个virtualenv,那么就会创建一个包含符号链接的目录local: ===> virtualenv symlinktest New python executable in /home/tguettler/tmp/symlinktest/bin/python Please make sure you remove any previous custom paths from your /home/tguettler/.pydis

如果我在Ubuntu 16.04(Python2)上创建一个virtualenv,那么就会创建一个包含符号链接的目录
local

===> virtualenv symlinktest
New python executable in /home/tguettler/tmp/symlinktest/bin/python
Please make sure you remove any previous custom paths from your /home/tguettler/.pydistutils.cfg file.
Installing setuptools, pip, wheel...done.



===> ls -l symlinktest/local/



===> ls -l symlinktest/local/*
lrwxrwxrwx 1 tguettler tguettler 35 Mär  7 14:21 symlinktest/local/bin -> /home/tguettler/tmp/symlinktest/bin
lrwxrwxrwx 1 tguettler tguettler 39 Mär  7 14:21 symlinktest/local/include -> /home/tguettler/tmp/symlinktest/include
lrwxrwxrwx 1 tguettler tguettler 35 Mär  7 14:21 symlinktest/local/lib -> /home/tguettler/tmp/symlinktest/lib


===> virtualenv --version
15.0.3
这在其他linux发行版上不会发生

为什么以及在何处创建此符号链接

更新 在这个平台上
openSUSE 42.1(x86_64)
创建了一个从lib64到lib的符号链接


我不理解这个符号链接的必要性。

因此,在稍微窥探一下virtualenv代码之后,似乎发生了以下情况:

create_environment
调用
install_python
调用
fix_local_scheme
()。 请注意,在docstring中,他们是如何声明posix系统(如使用Python2.7的Ubuntu)需要这样做的(您正在运行的)


您还可以阅读不同前缀的说明:,了解更多信息。

想知道我们是否可以从@nir0s推断出我没有运行五年前的virtualenv:-)我使用的是15.0.3版。我在SuSE linux上使用相同的virtualenv版本,但没有创建符号链接。不过,谢谢你关注我的问题。谢谢你提供这些信息。现在我看到了符号链接的创建位置。。。。只剩下一个问题:为什么需要这样做?
>>> import platform
>>> platform.linux_distribution()
('Ubuntu', '16.04', 'xenial')

$ python2.7
Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sysconfig
>>> sysconfig._get_default_scheme()
'posix_local'


$ cat /usr/lib/python2.7/sysconfig.py
def _get_default_scheme():
    if os.name == 'posix':
        # the default scheme for posix on Debian/Ubuntu is posix_local
        # FIXME: return dist-packages/posix_prefix only for
        #   is_default_prefix and 'PYTHONUSERBASE' not in os.environ and 'real_prefix' not in sys.__dict__
        # is_default_prefix = not prefix or os.path.normpath(prefix) in ('/usr', '/usr/local')
        return 'posix_local'
    return os.name