【问题标题】:pipenv shell vs pipenv run (with scripts)pipenv shell 与 pipenv 运行(带脚本)
【发布时间】:2021-06-26 05:54:53
【问题描述】:

在关注this tutorial by tds 时,我决定通过 pipenv 来做,因为我在 macos 上。我设法完成了大部分工作,但我一直遇到一个错误,表明我不明白 pipenv 如何设置环境。具体来说,它是如何运行脚本的。即使在 pipenv shell 中,它似乎也恢复到依赖我的系统 python (2.7)。 (parse_gpx.py是主要的python文件,2021-0622run.gpx是要分析的gpx格式文件)

  • “pipenv shell”然后运行命令“pipenv run python parse_gpx.py 2021-0622run.gpx”会出现以下错误:
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/pandas/__init__.py", line 25, in <module>
    from pandas import hashtable, tslib, lib
ImportError: dlopen(/Library/Python/2.7/site-packages/pandas/hashtable.so, 2): Symbol not found: _PyCObject_Type
  Referenced from: /Library/Python/2.7/site-packages/pandas/hashtable.so
  Expected in: flat namespace
 in /Library/Python/2.7/site-packages/pandas/hashtable.so

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "parse_gpx.py", line 5, in <module>
    import pandas as pd
  File "/Library/Python/2.7/site-packages/pandas/__init__.py", line 31, in <module>
    "extensions first.".format(module))
ImportError: C extension: dlopen(/Library/Python/2.7/site-packages/pandas/hashtable.so, 2): Symbol not found: _PyCObject_Type
  Referenced from: /Library/Python/2.7/site-packages/pandas/hashtable.so
  Expected in: flat namespace
 in /Library/Python/2.7/site-packages/pandas/hashtable.so not built. If you want to import pandas from the source directory, you may need to run 'python setup.py build_ext --inplace' to build the C extensions first.
  • “pipenv run python parse_gpx.py 2021-0622run.gpx”生成预期的表。

我的问题是:为什么“pipenv shell”看起来在系统 python 中而不是留在它自己的“盒子”中?这不是 pipenv 的全部意义吗?有可能我配置错了吗?我确实在设置它时遇到了一些问题(包括双重安装和其他事情),这就是为什么我不确定这种行为是设计使然,还是我之前的拙劣安装的残余。

任何帮助指出我解释正在发生的事情的文档将不胜感激!

最后,如果发错地方了,抱歉。我试着寻找最好的地方来问这个问题,并检查是否有人以前问过这个问题。

谢谢!

【问题讨论】:

    标签: python homebrew pipenv


    【解决方案1】:

    首先,你是否也安装了PyEnv?如果没有 PyEnv,PipEnv 将无法为您安装所需的 Python 版本。

    其次,在创建环境时,是否记得指定 Python 版本?要使用最新的 Python 3 版本创建环境,请使用 pipenv --three

    【讨论】:

    • 有点误导。 pipenv 不依赖或不需要 pyenv。它将使用 pyenv "if pyenv is available" 您可以通过任何方式使用安装 Python,然后通过 --python 告诉 pipenv 使用正确的版本。我有 4 个版本的 Python,并且可以很好地使用 pipenv,完全 没有 pyenv
    • 感谢您的回复!至于你的问题: 1.我先安装了 Pyenv。 2. 我在感兴趣的环境中将 Python 版本指定为 3.7,因为它是最兼容的(其他版本引起了问题)。为了提供更多见解(以下来自外壳程序):1.“pipenv run python file.py”=“python file.py”至少对于大多数文件我得到相同的输出 2. python --version 返回 3.7。 10、我配置本地文件使用的版本。 3. 我创建了一个小脚本来返回我正在运行的版本,在上述两种情况下,它都会报告 3.7.10。以上错误不变。
    猜你喜欢
    • 2021-07-20
    • 1970-01-01
    • 2023-01-26
    • 2019-01-28
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 2020-03-06
    • 2021-02-17
    相关资源
    最近更新 更多