Pip 安装失败并显示“无效要求:'<?xml version="1.0" encoding="utf-8"?>''
Pip install fails with `Invalid requirement: '<?xml version="1.0" encoding="utf-8"?>'`
我已经创建了一个包,并尝试将其上传到 testpypi 进行测试,正如 Python Packaging User Guide 中所建议的那样。我创建了一个发行版,注册了它,并上传到 testpypi:
me@machine$ cd mypackage
me@machine:~/mypackage$ python setup.py sdist bdist_wheel
me@machine:~/mypackage$ twine register dist/mypackage-1.0.0-py3-none-any.whl -r https://testpypi.python.org/pypi
me@machine:~/mypackage$ twine upload dist/* -r https://testpypi.python.org/pypi
这工作正常,但正在尝试安装它
me@machine:~$ pip install -r https://testpypi.python.org/pypi mypackage
失败并出现以下错误:
Invalid requirement: '<?xml version="1.0" encoding="utf-8"?>'
Traceback (most recent call last):
[...]
pip._vendor.pyparsing.ParseException: Expected W:(abcd...) (at char 0), (line:1, col:1)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/vol/home/me/miniconda3/envs/myenv/lib/python3.5/site-packages/pip/req/req_install.py", line 82, in __init__
req = Requirement(req)
File "/vol/home/me/miniconda3/envs/myenv/lib/python3.5/site-packages/pip/_vendor/packaging/requirements.py", line 96, in __init__
requirement_string[e.loc:e.loc + 8]))
pip._vendor.packaging.requirements.InvalidRequirement: Invalid requirement, parse error at "'<?xml ve'"
这是怎么回事
使用testpypi服务器的命令行参数上传和安装不一样。
对于 pip,-r
参数指定了一个需求文件,显然可以是 URL。如果你添加一个 -v
你会得到:
me@machine:~$ pip install -v -r https://testpypi.python.org/pypi mypackage
Looking up "https://testpypi.python.org/pypi" in the cache
No cache entry available
Starting new HTTPS connection (1): testpypi.python.org
"GET /pypi HTTP/1.1" 200 23968
Updating cache with response from "https://testpypi.python.org/pypi"
Invalid requirement: '<?xml version="1.0" encoding="utf-8"?>'
[...]
但是 https://testpypi.python.org/pypi
的响应不是有效的需求文件,pip 崩溃了。
如何解决这个问题
要使用 pip install
从 pypi 以外的其他来源安装,您需要使用 -i
参数:
me@machine:~$ pip install -i https://testpypi.python.org/pypi mypackage
这应该按预期工作并从 testpypi 服务器安装 mypackage
。
我已经创建了一个包,并尝试将其上传到 testpypi 进行测试,正如 Python Packaging User Guide 中所建议的那样。我创建了一个发行版,注册了它,并上传到 testpypi:
me@machine$ cd mypackage
me@machine:~/mypackage$ python setup.py sdist bdist_wheel
me@machine:~/mypackage$ twine register dist/mypackage-1.0.0-py3-none-any.whl -r https://testpypi.python.org/pypi
me@machine:~/mypackage$ twine upload dist/* -r https://testpypi.python.org/pypi
这工作正常,但正在尝试安装它
me@machine:~$ pip install -r https://testpypi.python.org/pypi mypackage
失败并出现以下错误:
Invalid requirement: '<?xml version="1.0" encoding="utf-8"?>'
Traceback (most recent call last):
[...]
pip._vendor.pyparsing.ParseException: Expected W:(abcd...) (at char 0), (line:1, col:1)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/vol/home/me/miniconda3/envs/myenv/lib/python3.5/site-packages/pip/req/req_install.py", line 82, in __init__
req = Requirement(req)
File "/vol/home/me/miniconda3/envs/myenv/lib/python3.5/site-packages/pip/_vendor/packaging/requirements.py", line 96, in __init__
requirement_string[e.loc:e.loc + 8]))
pip._vendor.packaging.requirements.InvalidRequirement: Invalid requirement, parse error at "'<?xml ve'"
这是怎么回事
使用testpypi服务器的命令行参数上传和安装不一样。
对于 pip,-r
参数指定了一个需求文件,显然可以是 URL。如果你添加一个 -v
你会得到:
me@machine:~$ pip install -v -r https://testpypi.python.org/pypi mypackage
Looking up "https://testpypi.python.org/pypi" in the cache
No cache entry available
Starting new HTTPS connection (1): testpypi.python.org
"GET /pypi HTTP/1.1" 200 23968
Updating cache with response from "https://testpypi.python.org/pypi"
Invalid requirement: '<?xml version="1.0" encoding="utf-8"?>'
[...]
但是 https://testpypi.python.org/pypi
的响应不是有效的需求文件,pip 崩溃了。
如何解决这个问题
要使用 pip install
从 pypi 以外的其他来源安装,您需要使用 -i
参数:
me@machine:~$ pip install -i https://testpypi.python.org/pypi mypackage
这应该按预期工作并从 testpypi 服务器安装 mypackage
。