在 Python 3.3 venv (OS X/Homebrew) 中安装分发

问题描述 投票:0回答:2

我一直在尝试在我的 OS X 机器上使用 Python 3.3 的内置“venv”模块启动并运行。我已经使用 Homebrew 安装了 Python 3.3。

根据文档,创建和切换虚拟环境按照您的预期工作:

$ python3 -m venv myvenv
$ source myvenv/bin/activate

我测试过这样的东西:

$ echo "YEAH = 'YEAH!'" > myvenv/lib/python3.3/site-packages/thingy.py
$ python
>>> import thingy
>>> print(thingy.YEAH)
'YEAH!'

但是当我尝试安装分发时,它根本无法安装到正确的位置。由于某种原因,它坚持尝试安装到

/usr/local/lib/python3.3/site-packages/
,但失败并显示以下消息:

No setuptools distribution found
running install
Checking .pth file support in /usr/local/lib/python3.3/site-packages/
/Users/victor/myvenv/bin/python -E -c pass
TEST FAILED: /usr/local/lib/python3.3/site-packages/ does NOT support .pth files
error: bad install directory or PYTHONPATH

You are attempting to install a package to a directory that is not
on PYTHONPATH and which Python does not read ".pth" files from.  The
installation directory you specified (via --install-dir, --prefix, or
the distutils default setting) was:

    /usr/local/lib/python3.3/site-packages/

and your PYTHONPATH environment variable currently contains:

    ''

无论我尝试使用

distribute_setup.py
安装还是直接使用源发行版安装,都会发生这种情况。我什至尝试过使用
--prefix=/Users/victor/myenv
但它仍然尝试将所有内容放入我的“全局”站点包中。

我不明白为什么会发生这种情况,但它在我的两台机器上是一致的。请注意,

sys.prefix
报告了正确的路径(虚拟环境)。

这是 Homebrew 的问题吗?操作系统? Python 3.3?文夫?我?

python macos homebrew python-3.3
2个回答
3
投票

(已删除)--------------------


1
投票

发生这种情况是因为

homebrew
安装了 distutils 配置文件:

$ brew cat python3  | grep "Tell distutils" -A5
    # Tell distutils-based installers where to put scripts
    (prefix/"Frameworks/Python.framework/Versions/#{VER}/lib/python#{VER}/distutils/distutils.cfg").write <<-EOF.undent
      [install]
      install-scripts=#{scripts_folder}
      install-lib=#{site_packages}
    EOF

$ mv ~/.local/Frameworks/Python.framework/Versions/3.3/lib/python3.3/distutils/distutils.cfg ~/tmp/
$ cat ~/tmp/distutils.cfg 
[install]
install-scripts=/Users/gatto/.local/share/python3
install-lib=/Users/gatto/.local/lib/python3.3/site-packages
$ . venv/bin/activate
(venv) $ python distribute-0.6.36/distribute_setup.py
(venv) $ ls venv/lib/python3.3/site-packages/
distribute-0.6.36-py3.3.egg  easy-install.pth  setuptools-0.6c11-py3.3.egg-info  setuptools.pth 

请参阅 bugs.python.org 上的“distutils.cfg Can Break venv”问题。

© www.soinside.com 2019 - 2024. All rights reserved.