我有一个我希望全球可用的脚本.我用标准的hashbang开始了它:
#! /usr/bin/env python
Run Code Online (Sandbox Code Playgroud)
并将其链接到我的virtualenv的bin目录:
~/environments/project/env/bin/myscript
Run Code Online (Sandbox Code Playgroud)
并将该目录添加到我的路径中.当我运行命令时:
myscript
Run Code Online (Sandbox Code Playgroud)
我的其中一个库出现导入错误.但是,如果我激活虚拟环境并运行脚本,它将按预期工作.
我已经排除了符号链接的问题(我也试过在bin文件夹中移动脚本).我也尝试用python运行脚本
python ~/environments/project/env/bin/myscript
Run Code Online (Sandbox Code Playgroud)
以前我使用的是激活环境然后运行我的脚本的脚本,但我觉得从这个文件夹运行的脚本应该与virtualenv的解释器和site-packages一起运行.任何关于为什么这可能不起作用的想法或某些方法我可以调试这个?
我有一个简单的脚本,它使用signalr-client-py作为外部模块。
from requests import Session
from signalr import Connection
import threading
Run Code Online (Sandbox Code Playgroud)
当我尝试使用 运行我的脚本时sudo python myScriptName.py出现错误:
Traceback (most recent call last):
File "buttonEventDetectSample.py", line 3, in <module>
from signalrManager import *
File "/home/pi/Desktop/GitRepo/DiatAssign/Main/signalrManager.py", line 2, in <module>
from signalr import Connection
ImportError: No module named signalr
Run Code Online (Sandbox Code Playgroud)
如果我只运行我的脚本输入python myScriptName.py它工作得很好但是我需要在前面有sudo因为稍后在我的其他脚本中(使用这个脚本)我在文件系统上执行写操作。
我对 Python 很陌生,这就是为什么我需要知道如何处理这种情况。如果我输入,pydoc modules我会得到一个列表,其中包含:
signalr
signalrManager
Run Code Online (Sandbox Code Playgroud)
如果我输入,pip freeze我可以看到那里列出:
signalr-client==0.0.7
Run Code Online (Sandbox Code Playgroud)