我该怎么解决系统路径Python和IronPython的区别

2024-05-04 22:41:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我在编写测试解析器时遇到了一些脚本的路径问题。在使用当前工作目录作为搜索路径. 因此,我的内部包路径不起作用。在

这是我的包装布局。在

MyPackage
  __init__.py
  _test
      __init__.py
      common.py
  parsers
     __init__.py
     _test
          my_test.py

我试图从MyPackage目录中调用脚本。在

命令行语句:

python./parsers/\u test/my_测试.py在

ipy./parsers/_test/my_测试.py在

位于my my_测试.py文件是。在

^{pr2}$

在python场景中,我只得到MyPackage/parsers/\u测试目录附加到系统路径因此无法找到MyPackage。在IronPython场景中,MyPackage/parsers/\u test目录和MyPackage/都位于搜索路径. 如果我从_test目录中调用测试,可能会得到同样的错误引用(它不会知道MyPackage)。即使我将测试文件合并到\u test目录中,我仍然会遇到此路径问题。在

我要注意的是,我刚做了测试

import sys
import os
sys.path.append(os.getcwd())

它将正确加载。但我必须对每一个文件都这样做。在

有没有办法解决这种路径问题,而不做下面的事情。在

A.附加一个相对路径系统路径在每个文件里。在

B.附加路径以包含MyPackage(我不希望我的包作为python“全局”系统路径的一部分)

非常感谢你的建议!在


Tags: 文件pytestimport路径目录脚本init
1条回答
网友
1楼 · 发布于 2024-05-04 22:41:51

脑海中浮现出两种选择:

  • 使用环境变量PYTHONPATH和include。

  • 把它加到你的系统路径在课程开始时

import sys.path
sys.path.append('.')
  • 如果需要动态导入相对路径,则可以执行以下操作:
import somemodule
import sys
dirname = os.path.dirname(os.path.abspath(somemodule.__file__))
sys.path.append(dirname)

相关问题 更多 >