在 mac (Big Sur) 和 sys.executable 上导入模块时出现问题,并且包的位置不匹配?

Issues with importing modules on mac (Big Sur), and sys.executable and location of package not matching up?

我有一个问题,我将安装一个包(如 tensorflowdpu_utils),它最终会在与 sys.executable 不同的位置。例如,当我在终端上 运行 pip show dpu_utils 时,我得到以下信息:

Name: dpu-utils
Version: 0.2.20
Summary: Python utilities used by Deep Procedural Intelligence
Home-page: https://github.com/microsoft/dpu-utils
Author: Deep Procedural Intelligence
Author-email: None
License: MIT
Location: /usr/local/lib/python3.9/site-packages
Requires: docopt, tqdm, sentencepiece, azure-storage, numpy, SetSimilaritySearch
Required-by: 

当我 运行 pythonimport dpu_utilsimport sys,然后 sys.executable,我得到以下信息:

python
Python 3.7.3 (default, Dec 13 2019, 19:58:14) 
[Clang 11.0.0 (clang-1100.0.33.17)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import dpu_utils
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'dpu_utils'
>>> import sys
>>> sys.executable
'/Library/Developer/CommandLineTools/usr/bin/python3'
>>> exit()

如您所见,问题的出现是因为我的 sys.executable 与实际安装包的位置不匹配。有没有办法设置 sys.executable 使其匹配 /usr/local/lib/python3.9/site-packages?自从在 Mac 上更新到 Big Sur 后,我对如何执行此操作感到非常困惑。我试图在 .zshrc 中编辑 PATH 变量,但没有这样的运气。如果有人能一步一步地告诉我如何编辑我的环境变量,以便我的程序找到它们实际安装的包材料,那将是非常有帮助的。谢谢。

要将包安装到特定路径,请将 pip 与 --target

结合使用

但我建议在非常具体的情况下使用它。因为如果一切都配置正确,就不需要给包特定的路径。

我遇到过这样的问题。在我看来,您在 python 3.7 和 3.9 的不同安装版本中遇到问题。这意味着 pip 将在不同的文件夹中安装包,并在不同的虚拟环境中引用它们(如果它们已创建)。安装在一个地方,运行 从另一个地方安装。好吧,或者环境认为有必要在那里联系它,因为可能安装了几个不同版本的python。或者,python 更新不正确。

可以做些什么来整理东西:

  • 可选 - 手动查找并删除所有提到的 python 和包。
  • 更新(安装)python,更新 pip。创建一个新的虚拟环境 使用所需的 python 版本。
  • 检查 python 和活动环境中的 pip 版本。
  • 仅安装此环境中的所有包和 运行 脚本。