簡體   English   中英

pip 安裝在 EC2 上的 virtualenv 中,安裝時 requirements.txt 文件中缺少包

[英]pip install in virtualenv on EC2 missing packages in requirements.txt file on install

我是 pip 在 EC2 實例(2018-03)的虛擬環境中安裝各種包。 Pip 成功安裝了一些包,但不是全部。 我在以下需求文件上使用pip install --force-reinstall -r requirements.txt ,該文件是在 Macos 上具有 Python 3.7.4 的工作實例的系統上創建的:

alembic==1.1.0
bcrypt==3.1.7
boto3==1.9.156
botocore==1.12.249
certifi==2019.9.11
cffi==1.12.3
chardet==3.0.4
Click==7.0
coverage==4.5.4
docutils==0.15.2
Flask==1.0.2
Flask-Bcrypt==0.7.1
Flask-Login==0.4.1
Flask-Migrate==2.5.2
Flask-Script==2.0.6
Flask-Session==0.3.1
Flask-SQLAlchemy==2.4.0
Flask-WTF==0.14.2
idna==2.8
itsdangerous==1.1.0
Jinja2==2.10.1
jmespath==0.9.4
lxml==4.3.2
Mako==1.1.0
MarkupSafe==1.1.1
numpy==1.16.2
pandas==0.24.2
patsy==0.5.1
psycopg2==2.8.3
pycparser==2.19
python-dateutil==2.8.0
python-editor==1.0.4
pytz==2019.2
requests==2.21.0
s3transfer==0.2.1
scikit-learn==0.20.3
scipy==1.2.1
six==1.12.0
SQLAlchemy==1.3.8
statsmodels==0.9.0
trimesh==3.1.11
urllib3==1.24.3
Werkzeug==0.15.5
WTForms==2.2.1

pip 給了我以下信息:

成功安裝 Click-7.0 Flask-1.0.2 Flask-Bcrypt-0.7.1 Flask-Login-0.4.1 Flask-Migrate-2.5.2 Flask-SQLAlchemy-2.4.0 Flask-Script-2.0.6 Flask-Session-0.3 .1 Flask-WTF-0.14.2 Jinja2-2.10.1 Mako-1.1.0 MarkupSafe-1.1.1 SQLAlchemy-1.3.8 WTForms-2.2.1 Werkzeug-0.15.5 alembic-1.1.0 bcrypt-3.1.7 boto3 -1.9.156 botocore-1.12.249 certifi-2019.9.11 cffi-1.12.3 chardet-3.0.4 coverage-4.5.4 docutils-0.15.2 idna-2.8 itsdangerous-1.1.0 jmespath-0.9.4 lxml-4.3 .2 numpy-1.16.2 pandas-0.24.2 patsy-0.5.1 psycopg2-2.8.3 pycparser-2.19 python-dateutil-2.8.0 python-editor-1.0.4 pytz-2019.2 requests-2.21.0 s3transfer-0.2 .1 scikit-learn-0.20.3 scipy-1.2.1 六-1.12.0 statsmodels-0.9.0 trimesh-3.1.11 urllib3-1.24.3

但是,當我執行pip list時,我只看到安裝了以下軟件包。 請注意,例如, coveragepsycopg2被列為成功安裝,但未顯示。 因此,快速python -c "import coverage"將失敗。

Package          Version  
---------------- ---------
alembic          1.1.0    
boto3            1.9.156  
botocore         1.12.249 
certifi          2019.9.11
chardet          3.0.4    
Click            7.0      
docutils         0.15.2   
Flask            1.0.2    
Flask-Bcrypt     0.7.1    
Flask-Login      0.4.1    
Flask-Migrate    2.5.2    
Flask-Script     2.0.6    
Flask-Session    0.3.1    
Flask-SQLAlchemy 2.4.0    
Flask-WTF        0.14.2   
idna             2.8      
itsdangerous     1.1.0    
Jinja2           2.10.1   
jmespath         0.9.4    
Mako             1.1.0    
patsy            0.5.1    
pip              19.3.1   
pycparser        2.19     
python-dateutil  2.8.0    
python-editor    1.0.4    
pytz             2019.2   
requests         2.21.0   
s3transfer       0.2.1    
setuptools       41.6.0   
six              1.12.0   
trimesh          3.1.11   
urllib3          1.24.3   
Werkzeug         0.15.5   
wheel            0.33.6   
WTForms          2.2.1

我的問題是:

  1. 除了我已經嘗試過的--force-reinstall--no-cache-dir之外,還有其他方法可以解決 pip 選項嗎?
  2. 我的問題是否與我可以在 EC2 上獲取的 Python 的最新支持的 package 是 3.6.8 的事實有關,但我的 requirements.txt 文件是在 3.7.4 系統上創建的? 是的,我知道,下次我會更聰明,從一開始就使用 docker。

經過一番折騰和幾乎做 Docker 訓練營之后,我決定將 go 重新進行一輪,並發現了根本問題。 在我的虛擬環境中,我注意到pip list僅列出$MYENV/lib/Python3.6/data/dist-packages中列出的包,而有問題的包都位於$MYENV/lib64/Python3.6/data/dist-packages 這導致了一些額外的搜索和這個響應,這表明將 dist-packages 的 lib64 版本符號鏈接到 lib 版本,這解決了我的問題。 我正在使用 pip 版本 19.3.1,並且引用的文章是 2 年前的,所以我肯定會和一些人交談。

但是,對於那些想要快速解決方案的人來說,這里是步驟。

  1. 全新的虛擬環境:像往常一樣設置全新的虛擬環境。

  2. pip 之前符號鏈接:在開始安裝任何軟件包之前進行符號鏈接。 通常這看起來像:

ln -s $YOURENV/lib/Python3.x/data/dist-packages $YOURENV/lib64/Python3.x/data/dist-packages
  1. Go 和 pip :不,您可以pip install -r requirements.txt 仔細檢查pip list ,您應該會看到列出的所有包。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM