【发布时间】:2019-12-22 20:48:24
【问题描述】:
我正在尝试让 wxPython 在 MacOS 上使用 virtualenv 和 virtualenvwrapper 插件在基于 pyenv 的虚拟环境中工作。我已经阅读了有关使这项工作的几个问题,但大多数答案似乎都假设我正在使用系统 python 版本,和/或仅解决损坏设置的一个方面。我还没有看到任何解释 wxPython 在启动时检查的内容。
我有由 pyenv 用--enable-framework 编译的 python 3.7。
env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.7.4
需要明确的是,我的 Python 工具链中的任何工具或库都不是由 Homebrew 安装的。
我的 virtualenv 可以通过 --system-site-packages 访问框架。可以访问框架和显示应该是 wxPython 工作所需的全部,但在启动任何测试应用程序时我仍然遇到相同的错误:
此程序需要访问屏幕。请运行 python的框架构建,仅当您登录时 在 Mac 的主显示屏上。
在我看来,我应该需要的一切都可用。
% pyenv which python3.7
/Users/matt/.pyenv/versions/3.7.4/bin/python3.7
% mkvirtualenv --system-site-packages --python python3.7 wxtest
Running virtualenv with interpreter /Users/matt/.pyenv/shims/python3.7
Already using interpreter /Users/matt/.pyenv/versions/3.7.4/Python.framework/Versions/3.7/bin/python3.7
Using base prefix '/Users/matt/.pyenv/versions/3.7.4/Python.framework/Versions/3.7'
New python executable in /Users/matt/.ve/wxtest/bin/python3.7
Also creating executable in /Users/matt/.ve/wxtest/bin/python
Installing setuptools, pip, wheel...
done.
virtualenvwrapper.user_scripts creating /Users/matt/.ve/wxtest/bin/predeactivate
virtualenvwrapper.user_scripts creating /Users/matt/.ve/wxtest/bin/postdeactivate
virtualenvwrapper.user_scripts creating /Users/matt/.ve/wxtest/bin/preactivate
virtualenvwrapper.user_scripts creating /Users/matt/.ve/wxtest/bin/postactivate
virtualenvwrapper.user_scripts creating /Users/matt/.ve/wxtest/bin/get_env_details
% python -m site
sys.path = [
'/Users/matt/devel/wxtest',
'/Users/matt/.ve/wxtest/lib/python37.zip',
'/Users/matt/.ve/wxtest/lib/python3.7',
'/Users/matt/.ve/wxtest/lib/python3.7/lib-dynload',
'/Users/matt/.pyenv/versions/3.7.4/Python.framework/Versions/3.7/lib/python3.7',
'/Users/matt/.ve/wxtest/lib/python3.7/site-packages',
'/Users/matt/.pyenv/versions/3.7.4/Python.framework/Versions/3.7/lib/python3.7/site-packages',
]
USER_BASE: '/Users/matt/.local' (exists)
USER_SITE: '/Users/matt/.local/lib/python3.7/site-packages' (doesn't exist)
ENABLE_USER_SITE: True
% pip install wxPython
Collecting wxPython
[...]
Successfully installed numpy-1.18.0 pillow-6.2.1 six-1.13.0 wxPython-4.0.7.post2
IsDisplayAvailable() 的代码隐藏在_core 共享对象库中,因此不是特别容易检查。我不是 C++ 编码员,到目前为止,我在代码库中挖掘的只是src/_app.i 中的文档字符串,而不是实际代码。
- 在 Mac OS X 上,
False返回值意味着 wx 不是 能够访问窗口管理器,如果登录就会发生这种情况 远程运行,或者从普通版本的 python 运行 框架版本,(即,pythonw。)
我这里的要求似乎满足了我的要求。我没有pythonw 二进制文件,但正如pythonw(1) 手册页所说:
其实从Python 2.5开始,普通的python也允许GUI访问,所以 python 和 pythonw 现在可以互换了。
有没有人详尽列出 wxPython 在运行之前实际期望找到的内容?
【问题讨论】:
标签: python-3.x macos wxpython pyenv