Python 错误:没有该文件或目录
我遇到了一个错误:没有这样的文件或目录,但我不太明白为什么会这样。我知道这个问题看起来很简单,但我不确定这里指的是哪个目录。
env = os.environ.copy()
env['MY_LIB_PATH'] = '/Users/user/Documents/workspace/projecttest/lib'
subprocess.call(["test_program",image_url],env=env)
错误信息:
Traceback (most recent call last):
File "test.py", line 20, in <module>
model = get_model(image.get_image_content())
File "/Users/user/Documents/workspace/projecttest/utilities.py", line 51, in get)model
env=env
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 522, in call
return Popen(*popenargs, **kwargs).wait()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 709, in __init__
errread, errwrite)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1326, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
2 个回答
2
你不能随便设置一个环境变量,然后指望 Python 能神奇地读取到它。你可以选择以下两种方式:
- 把路径放到
PATH
里。 用你设置的环境变量来构建路径,比如:
subprocess.call([os.path.join(os.environ["MY_LIB_PATH"], "test_program"), img_url])
3
为了确保程序能被找到,你需要把它添加到 PATH
环境变量中。
env = os.environ.copy()
env['PATH'] += os.pathsep + '/Users/user/Documents/workspace/projecttest/lib'
subprocess.call(["test_program", image_url], env=env)
或者你可以直接调用它;
cmd = '/Users/user/Documents/workspace/projecttest/lib/test_program'
subprocess.call([cmd, image_url])
另外,你的 test_program
必须是可执行的。
需要注意的是, subprocess.call
只能执行 程序。如果你想使用动态链接库中的某个函数,就得用 ctypes
。