【发布时间】:2020-09-08 10:08:08
【问题描述】:
我有一个带有一些功能的 cli,我使用以下方法将其复制到 /local/bin:
sudo ln -s ~/code/project/scripts/sl /usr/local/bin/sl
如果我激活虚拟环境并执行sl command_name service,它会按预期工作。
但如果尝试从终端运行它,我会得到:
user@MacBook-Pro-USER ~ % sl command_name service
Traceback (most recent call last):
File "/usr/local/bin/sl", line 4, in <module>
from sl_commands.sl import execute
File "/Users/user/code/project/scripts/sl_commands/sl.py", line 1, in <module>
import argh
ImportError: No module named argh
运行 pip3 install argh 会导致:
user@MacBook-Pro-USER ~ % pip3 install argh
Requirement already satisfied: argh in /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages (0.26.2)
如果我在 ubuntu 上尝试相同的操作,脚本会正确执行。如何在不激活 virtualenv 的情况下使其在 MacOS 上运行?
【问题讨论】:
-
看起来脚本不同意
pip3使用哪个 Python 库。你设置PYTHONPATH吗?脚本的 shebang 是什么,如果这不是绝对路径,它会解决什么问题?您可以从脚本中转储sys.path的值作为回溯的一部分吗? -
@tripleee 这是shebang。我把它作为
#! /usr/bin/env python,但它需要python3for MacOS