编辑:是的我知道this question已经存在,除了我的问题有点不同,没有解决方案修复它。
当我在工作而不是在我的个人计算机上时,我会处理大部分Python内容,但我决定将其安装在我的个人计算机上。我全新安装了python 3.6.1,并使用virtualenv
创建了一个虚拟环境。然后在virtualenv我尝试pip安装urllib(或任何模块),我收到错误:
(pdbot) C:\Users\user\Documents\pdbot>pip install urllib
Collecting urllib
Using cached urllib-1.21.1.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\user\AppData\Local\Temp\pip-build-50tn0wlb\urllib\setup.py", line 191
s.connect((base64.b64decode(rip), 017620))
^
SyntaxError: invalid token
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\user\AppData\Local\Temp\pip-build-50tn0wlb\urllib\
我在别处读到这个错误与setuptools没有正确安装有关。所以我试着解决这个问题:
easy_install -U setuptools
接下来我收到了更奇怪的错误:
(pdbot) C:\Users\zeke\Documents\pdbot>easy_install -U setuptools
Searching for setuptools
Reading https://pypi.python.org/simple/setuptools/
Downloading https://pypi.python.org/packages/a9/23/720c7558ba6ad3e0f5ad01e0d6ea2288b486da32f053c73e259f7c392042/setuptools-36.0.1.zip#md5=430eb106788183eefe9f444a300007f0
Best match: setuptools 36.0.1
Processing setuptools-36.0.1.zip
Writing C:\Users\zeke\AppData\Local\Temp\easy_install-jhg1val_\setuptools-36.0.1\setup.cfg
Running setuptools-36.0.1\setup.py -q bdist_egg --dist-dir C:\Users\zeke\AppData\Local\Temp\easy_install-jhg1val_\setuptools-36.0.1\egg-dist-tmp-8apak7kn
warning: no files found matching '*' under directory 'setuptools\_vendor'
Copying setuptools-36.0.1-py3.6.egg to c:\users\zeke\documents\pdbot\lib\site-packages
Adding setuptools 36.0.1 to easy-install.pth file
Installing easy_install-script.py script to c:\users\zeke\documents\pdbot\Scripts
Installing easy_install.exe script to c:\users\zeke\documents\pdbot\Scripts
error: [WinError 5] Access is denied: 'c:\\users\\zeke\\documents\\pdbot\\Scripts\\easy_install.exe'
这看起来像是一个权限错误,但我在管理员命令提示符(Windows 10)中运行了这两个并得到了相同的结果。我是这台计算机上唯一的用户,我拥有所有管理员权限。这个virtualenv导致了一个问题吗?我该如何解决这个问题?
编辑:我能够通过利用python可执行文件修复权限问题,如下所示: python -m easy_install -U setuptools
但它没有解决python setup.py egg_info
问题。尝试pip install
时,我仍然收到此错误消息:
Command "python setup.py egg_info" failed with error code 1 in C:\Users\user\AppData\Local\Temp\pip-build-50tn0wlb\urllib\
我已经尝试了python -m pip install urllib
和pip install urllib
,但都没有工作。
答案 0 :(得分:0)
我在尝试安装urllib时遇到了同样的问题,但在执行pip search urllib
后,我发现问题是由于urllib的版本。来自搜索:
$ pip search urllib
...
> urllib5 (5.0.0) - Just increment the number and create a new lib. Never fix the original one.
最后,一个简单的
pip install urllib5
在升高的炮弹内解决了它。
答案 1 :(得分:0)
要回答您的问题,有两点要做:
<强> 1。你很幸运,你没有安装该软件包!
您尝试安装的软件包是一个恶意创建的python软件包,其设计看起来像一个真正的软件包(在本例中为urllib3)。如果您已安装它,则该程序包将正常运行,除非它将有关您安装程序包的系统的一些基本信息发送到URL(您可以查看有关此here的更多详细信息)。您可以通过以下任一链接阅读有关此假包裹的更多信息:
将您系统的基本信息发送到未知来源并不是您可以做的最糟糕的事情,但在可能的情况下肯定是您想要避免的。
<强> 2。要正确安装软件包......
特别是urllib:
要安装urllib,您需要指定要安装的软件包的版本。例如,pip install urllib3
。
一般包装:
正如@Elisabete Coelho建议的那样,您可以使用pip search <package-name>
功能查看可用的包。但是,这并不完美,因为它可能会列出您尝试安装的恶意库。一个好的指导原则是您应该密切关注软件包文档中的安装说明,以避免任何不可预见的问题。生活在一个人们假装蟒蛇包装的世界里,这只是一个不幸的必需品。
答案 2 :(得分:0)
您的问题与权限有关。相关/类似工具setup_tools
,easy_install
和pip
都倾向于为他们尝试在软件包安装文件夹中创建的文件和文件夹设置一组默认权限,而不是而不是试图匹配他们正在安装的位置的访问权限。
在Linux系统上,文件和文件夹各自具有权限,这通常会被sudo
命令绕过。在Windows上,等效的是以管理员身份运行安装程序。由于您在控制台中,因此必须打开具有管理员权限的控制台才能运行pip
命令。
在Windows下,从管理员控制台安装pip
的模块仍然可供系统中具有PYTHONPATH系统环境变量中正确路径的所有用户访问。但是,在Linux下,由于文件本身可能无法为其他用户创建读取和执行访问权限而且可能需要在安装后手动修改其权限,因此问题更加严重。
其他两个答案都声称问题是您没有在pip
的调用中指定模块的正确“版本”。两者都不正确,因为错误清楚地表明安装文件夹访问权限违规导致失败,但他们也错误地推荐了非常不安全的行为。
pip install urllib
!= pip install urllib5
这是两个完全不同的套餐
pip
(https://packaging.python.org/tutorials/installing-packages/#id17)的文档清楚地说明了明确指定模块版本的方式是pip install 'urllib==5'
。
作为pip
实现的包管理引擎如何工作的一部分,运行命令pip install urllib
将始终尝试使用最新版本的urllib
包,因此您不需要指定版本,除非你有某些理由需要一个非常特定的模块版本。