如何在运行时添加Python包路径

3 投票
3 回答
3408 浏览
提问于 2025-04-16 16:00

这里有一个场景,我希望你能帮我。

我在 /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 脚本的部分包起来。另外,请确保你的包名没有大小写敏感的问题,比如叫 Prpr 的包是不同的。

撰写回答