Python3轮子返回错误:在这个平台上不支持轮子。

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

我想安装 wxPython4.0.1------。

在这个页面上显示了所有类型的轮子文件,我使用的是Ubuntu 14.04 64位和Python 3.5,所以我认为应该使用wxPython-4.0.1-cp35-cp35m-win32。我使用的是Ubuntu 14.04 64位和Python 3.5,所以我认为我应该使用wxPython-4.0.1-cp35-cp35m-win32.whl,但我并不完全清楚,这个页面缺乏一个简单的完整安装说明。

@nepix32帮我展示了Linux版本。https:/wxpython.orgpagesdownloads 而我一直在指着 https:/extras.wxpython.orgwxPython4extraslinuxgtk3ubuntu-14.04。

apt-get

我的喜好是使用apt-get,所以我在SO上搜索,发现了.NET Framework 2.0。在ubuntu 14.04上安装wxpython。使用travis-ci进行wxpython测试。其中都失败了。

所以我继续在轮子上搜索。

安装轮子

于是我继续在轮子上搜索。在SO上我找到了.wl文件。如何安装一个带有.whl文件的Python包?6首先我读到 https:/stackoverflow.comtagspython-wheelinfo。https:/pypi.python.orgpypiwheel 轮子似乎不是标准安装,所以我下载了轮子-0.30.0文件,并解压。

首先我升级了pip:

sudo pip install --upgrade pip

然后在轮子中执行setup.py 。

sudo python3.5 setup.py install

似乎成功了。

试着用轮子安装wxpython

然后我想安装轮子文件。

sudo pip install /home/hulsman/Downloads/wxPython-4.0.1-cp35-cp35m-win32.whl

我想对于python3.x应该使用pip3,而不是pip。所有的例子都显示为pip。我试了两个都没有成功。

我还尝试了:

sudo -H pip3 install /home/hulsman/Downloads/wxPython-4.0.1-cp35-cp35m-win32.whl

所有的尝试都返回几乎相同的错误信息。

wxPython-4.0.1-cp35-cp35m-win32.whl不是这个平台上支持的轮子。

使用特定的Linux版本

我用的是

wxPython-4.0.1-cp35-cp35m-linux_x86_64.whl。

但不知道'm'和'mu'版本的区别。结果是:

    sudo pip install /home/hulsman/Downloads/wxPython-4.0.1-cp35-cp35m-linux_x86_64.whl wxPython
The directory '/home/hulsman/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/home/hulsman/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
wxPython-4.0.1-cp35-cp35m-linux_x86_64.whl is not a supported wheel on this platform.
hulsman@vbox11:~/Downloads$ 

而使用-H标志。

    hulsman@vbox11:~/Downloads$ sudo -H pip install /home/hulsman/Downloads/wxPython-4.0.1-cp35-cp35m-linux_x86_64.whl wxPython
wxPython-4.0.1-cp35-cp35m-linux_x86_64.whl is not a supported wheel on this platform.
hulsman@vbox11:~

检查我的环境

$ pip -V | grep -o "(.*)"

(python 3.4)

Pip指向Python3.4

$ pip3.5 install -i https://localhost  --trusted-host localhost cffi==1.11.4
pip3.5: command not found

pip3.5不存在

$ python3.5 -c "import pip; print(pip.pep425tags.get_abbr_imp())"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
AttributeError: module 'pip.pep425tags' has no attribute 'get_abbr_imp'

这个失败了。所以我试了一下。

$ python3.5 -c "import pip; print(pip.pep425tags.get_abbr_impl())"

cp

于是我尝试更新pip。

~$ pip install -U pip

要求已经更新:pip in usrlocallibpython3.4dist-packages。

我试着按照建议在 安装pip for python 3.5 L. Martin的,但没有成功。

与pip3的行为是相同的。

你能告诉我什么时候错了,我怎么解决这个问题?

python-3.x pip wxpython python-wheel
1个回答
0
投票

在Linux中安装wxPython并不像WindowsOSX轮子那样简单,因为有太多的变种:distro,GTK2GTK3等。但他们确实解释了如何在Linux中安装它。

https:/wxpython.orgpagesdownloads。

用下载的轮子安装

你已经找到了正确的轮子 (cp35m-linux_x86_64),但你必须在目标Python版本中安装它。如果您找不到适用于目标 Python 的 pip,只需使用 -m 选项。

python3.5 -m pip install wxPython-4.0.1-cp35-cp35m-linux_x86_64.whl

用通常的方式从pypi安装

正常 pip install 方法也可以用,但对于 Linux 下的 wxPython 来说,它会尝试从源文件中为你构建轮子--假设你有所有的依赖关系。这将会很不方便,而且速度很慢。

同样,你必须使用正确的 Python 目标版本来运行它。

python3.5 -m pip install -U wxpython

直接从 wxpython.org 车轮

最简单的方法是直接从他们那里获得。

python3.5 -m pip install wxPython -U --pre \
  -f  https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-14.04

或者,如果你只是想下载正确的轮子,以便以后手动安装, 并且特别想针对一个特定的python版本,比如3. 5:

pip download wxPython \
  -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-14.04 \
  --only-binary=:all: \
  --platform linux_x86_64 \
  --abi cp35m \
  --python-version 35 \
  -d "${HOME}/pymodules/wxpython-py35-whl"

根据需要修改url中的distro. 注意,pip版本在这里并不重要。

'm'和'mu'的区别在Python 3中已经没有关系了。它与 ucs2ucs4 unicode 构建标志有关。如果您的目标是 Python 2.7,您应该使用 abi 选项来选择'mu'版本,就像这样。--abi cp27mu

由于pip 19.2增加了一个新的 debug 命令,这类晦涩难懂的问题可能会变得更容易诊断。那 无用 not a supported wheel on this platform 消息当然没有帮助任何人。

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