【问题标题】:python cant find packages on ec2 instancepython在ec2实例上找不到包
【发布时间】:2020-11-28 13:56:40
【问题描述】:

我正在尝试使用 jenkins 在 aws ec2-instance 上运行 python 脚本。

我收到以下错误:

[ProdTest] $ /bin/sh -xe /tmp/jenkins14047325752732522807.sh
+ python3 prod.py
Traceback (most recent call last):
  File "prod.py", line 2, in <module>
    import base
  File "/home/jenkins-slave-strat/workspace/ProdTest/base.py", line 3, in <module>
    import boto3
ModuleNotFoundError: No module named 'boto3'
Build step 'Execute shell' marked build as failure
Finished: FAILURE

在 ec2 实例上:

$ python3 --version
Python 3.7.9

$ pip3 install boto3 --user
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
Requirement already satisfied: boto3 in /usr/local/lib/python3.7/site-packages (1.16.25)
Requirement already satisfied: jmespath<1.0.0,>=0.7.1 in /usr/local/lib/python3.7/site-packages (from boto3) (0.10.0)
Requirement already satisfied: s3transfer<0.4.0,>=0.3.0 in /usr/local/lib/python3.7/site-packages (from boto3) (0.3.3)
Requirement already satisfied: botocore<1.20.0,>=1.19.25 in /usr/local/lib/python3.7/site-packages (from boto3) (1.19.25)
Requirement already satisfied: urllib3<1.27,>=1.25.4; python_version != "3.4" in /usr/local/lib/python3.7/site-packages (from botocore<1.20.0,>=1.19.25->boto3) (1.26.2)
Requirement already satisfied: python-dateutil<3.0.0,>=2.1 in /usr/local/lib/python3.7/site-packages (from botocore<1.20.0,>=1.19.25->boto3) (2.8.1)
Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.7/site-packages (from python-dateutil<3.0.0,>=2.1->botocore<1.20.0,>=1.19.25->boto3) (1.15.0)

如何让 python 访问 /usr/local/lib/python3.7/site-packages 中的包?

感谢大家抽出宝贵时间!

【问题讨论】:

    标签: python amazon-web-services amazon-ec2 package


    【解决方案1】:

    在给出简短回答之前,请注意几点:

    1. 我不知道 EC2 实例运行的是哪个版本的 Linux(我假设)。
    2. 因此,不清楚是否安装了 Python 2,但由于您使用的是 pip3 而不仅仅是 pip,所以看起来可能是。

    您可以尝试更改 $PATH 变量,但通常认为使用 Python 的虚拟环境是一种好习惯。我个人是 Conda 的粉丝,但您也可以找到 Pipenv 的指南。我的建议是; 通过 Miniconda 安装 Conda,然后执行以下操作:

    $ conda create --name myAppEnv python=your.python.version
    $ conda activate myAppEnv
    $ conda install [your libraries]
    

    【讨论】:

    • 奇怪的是,站点包包含在 PATH 中。我什至在安装软件包时得到了一些看似矛盾的陈述(在这个例子中是 numpy): 警告:脚本 f2py、f2py3 和 f2py3.7 安装在 '/usr/local/bin' 中,它不在 PATH 上。但是,当检查它给出的路径时: $ echo $PATH /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/ home/ec2-user/bin 无论如何,您的解决方案有效,并且看起来比我目前所做的任何事情都更好:D 谢谢!
    • 是的。如果您不是数据科学人员,您可能想研究 Pipenv,但基本上任何 Python 开发人员,即使是在单一用途的 VM 上,都应该使用虚拟环境。这只是语言如何支离破碎的一个怪癖。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 2019-01-04
    • 1970-01-01
    相关资源
    最近更新 更多