【发布时间】:2012-07-24 05:23:27
【问题描述】:
我知道模块的名称不应该有破折号。
这是我的存储库结构
my-repo-name/
src/
tests/
__init__.py
tests.py
fab/
__init__.py
fabfile.py
README.rst
__init__.py
在我的测试中,我需要导入 fabfile.py 来运行测试。但是因为名字有破折号,我不能做from my-module-name.fab.fabfile import X,Y,Z或相对导入,因为它是一个非包。
任何建议如何在不使用__import__(...) 破解或将其添加到系统路径的情况下执行此操作?我应该添加另一个目录吗?
【问题讨论】:
-
我认为更改你的 repo 的名称可能是你最好的选择,因为你不能在 python 中使用名称中的破折号来做任何事情。第二个最佳选择是以不同(可导入)名称创建指向该目录的符号链接。
-
谢谢.. 但我见过有人使用名称中带有破折号的存储库。符号链接...我想过,但
hg是硬链接。也许问题更多的是关于如何构建我的回购协议,以便它实际上不会从my-repo-name导入?谢谢。 -
一个存储库,当然。大多数时候,repo 不是模块/包,它是模块/包目录的容器......并且名称中不能有破折号。
-
只需再创建一级目录。
my-repo-name -> myproject -> __init__.py, src, tests, ...