我使用pip freeze来取出我的virtualenv的每个依赖项,以便在其他位置使用此环境,以便像下面那样获取requirements.txt。为什么pip冻结生成package_name = 0.0.0
certifi==2017.7.27.1
chardet==3.0.4
get==0.0.0
gevent==1.2.2
greenlet==0.4.12
idna==2.6
numpy==1.13.3
pandas==0.20.3
post==0.0.0
psycopg2==2.7.3.1
public==0.0.0
python-dateutil==2.6.1
pytz==2017.2
query-string==0.0.0
request==0.0.0
requests==2.18.4
setupfiles==0.0.50
six==1.11.0
sqlalchemy==1.1.14
urllib3==1.22
我以前在其他电脑这个要求,但每当我试图运行PIP安装-r requirements.txt我有类似下面的错误。
$ pip install -r requirements.txt
Requirement already satisfied: certifi==2017.7.27.1 in d:\workspace\juice-project\venv\lib\site-packages (from -r requirements.txt (line 1))
Requirement already satisfied: chardet==3.0.4 in d:\workspace\juice-project\venv\lib\site-packages (from -r requirements.txt (line 2))
Collecting get==0.0.0 (from -r requirements.txt (line 3))
Using cached get-0.0.0.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "d:\workspace\juice-project\venv\lib\tokenize.py", line 452, in open
buffer = _builtin_open(filename, 'rb')
PermissionError: [Errno 13] Permission denied: 'C:\\Users\\verys\\AppData\\Local\\Temp\\pip-build-1cd8yl0b\\get\\setup.py'
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\verys\AppData\Local\Temp\pip-build-1cd8yl0b\get\
我以为是窗户使用者的特权造成的,所以我花了很多时间来解决这个问题。我因为这个bug而非常恼火。你能解释为什么这些未使用的东西会产生,为什么这个错误可能是这样的?
除了答案之外,还有一个问题:你真的安装了吗?你真的使用这些'get' /'request' /'setupfiles'吗?或者您是否尝试安装'requests',但错误输入?然后将您的计算机视为可能被黑客入侵并感染。我很难破译这些库,并且可能是作者故意做的,以隐藏恶意代码。阅读关于如何执行此类攻击的信息:https://nakedsecurity.sophos.com/2017/09/19/pypi-python-repository-hit-by-typosquatting-sneak-attack/ –
@SergeyVasilyev我在我的原始virtualenv,并没有关于这个问题。但我在我公司的代理后面运行了这个环境。删除每行以0.0.0结尾的行后,我一直使用这个要求。 – verystrongjoe
这里的区别在于:'request'没问题,'request'不是。前者是一个众所周知的库,后者可能是一个恶意软件包(由于其内部的秘密程度以及通过'setup.py'安装时执行多少额外* bash *逻辑)。仅仅输入一次就可以让后者及其依赖项进入你的虚拟世界。 –