Joh*_*nut 5 python python-import python-3.x
我正在尝试从名为my_classes.py. 问题是,它位于名为@file_directory的目录中。
所以结构是,我在项目目录的顶部有main.py,在同级还有一个名为lib的目录。在“lib”中有一个名为“@file_directory”的子目录,其中有一个模块“my_classes”,如下所示。
-> main.py
-> /lib
-> lib_other_files.py
-> /@file_directory
-> my_classes.py
Run Code Online (Sandbox Code Playgroud)
我通常能做的是
from lib.@file_directory.myclasses import cust_class
Run Code Online (Sandbox Code Playgroud)
但是因为该@符号是一个包装符号,所以它阻止我从“@file_directory”导入文件。简单的灵魂当然是,只需更改目录名称,但我想保留文件名/无权在项目中更改它。有没有办法像 escpae 字符一样使用从具有特殊字符的目录中导入模块?
您不能导入带有“@”符号等字符的模块...但是,使用 execfile 可能是适合您的解决方法。
使用 Python 2.7.5 进行测试
my_classes.py 示例代码:
def printMe():
print "foo from my_classes"
Run Code Online (Sandbox Code Playgroud)
main.py 示例代码:
execfile("./lib/@file_directory/my_classes.py")
printMe()
Run Code Online (Sandbox Code Playgroud)
执行 main.py 打印出:
>>python main.py
foo from my_classes
Run Code Online (Sandbox Code Playgroud)
发生的情况是main.py将运行my_classes.py文件,现在您可以直接引用 my_classes.py 中的函数或任何相关代码。
Python 3.X 等效项
我没有安装 python 3,但他们确实删除了 execfile.. execfile 的替代方案是:
exec(open("./lib/@file_directory/my_classes.py").read())
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助您实现您的需求。
| 归档时间: |
|
| 查看次数: |
1197 次 |
| 最近记录: |