如何在运行时添加Python包路径
这里有一个场景,我希望你能帮我。
我在 /home/k/PR-TEST/Pr/test
这个地方有一些 Python 单元测试。
kahmed@qatools:~/PR-TEST/Pr-test$ ls
_apache.py archive clienttest decorators.py fakeTecoreClient.py fixtures.pyc psqlharness.py servertest testhelp.pyc testutils.pyc
apache_server.py cache commontest decorators.pyc fixtures.py mysqlharness.py runtests.sh testhelp.py testutils.py
我实际要测试的包在 /home/k/PR/Pr
这个位置,叫做(文件夹名)pref。
kahmed@qatools:~/PR/Pr$ pwd
/home/kahmed/PR/Pr
kahmed@qatools:~/PR/Pr$ ls
bin conf images init.d iped logrotate.d NEWS pref rpa sbin scripts src test VERSION
现在,我在终端里切换到 ~/PR-TEST/Pr-test
,然后运行:
nosetests -s --with-coverage --cover-package /home/k/PR/Pr/pref `find . -name "*test.py"`
但是我遇到错误,系统说找不到 pref 里的包。
你知道怎么解决这个问题吗?
我需要确保 Python 环境能找到 pr 这个包。
3 个回答
0
你应该把你的应用程序包放在一个叫“foo/app”的文件夹里,把测试放在另一个叫“foo/tests”的子文件夹里。然后从foo
这个文件夹运行你的测试,这样它们就可以直接导入app
了。
1
你应该把你的包的路径添加到PYTHONPATH环境变量中。
4
如果你不想在启动程序之前修改PYTHONPATH,或者因为某些原因不能修改的话,你可以在程序运行时修改 sys.path,这样也能达到类似的效果。
不过在这种情况下,你需要把调用 nosetests
脚本的部分包起来。另外,请确保你的包名没有大小写敏感的问题,比如叫 Pr
和 pr
的包是不同的。