我想导入python模块而不将其包含的文件夹添加到python路径。我希望导入看起来像
<div class='anim'></div>
由于应使用的特定路径,导入类似于
from A import B as C
这对于长路径和模块名称来说非常不方便。有没有更简单的方法?有没有一种方法,模块没有添加到局部变量(没有A)?
答案 0 :(得分:0)
如果您不希望$ path1=/tmp/errorlog_invest_12345_88_1:05:45.txt
$ file=${path1##*/}
$ echo $file
errorlog_invest_12345_88_1:05:45.txt
$ dir=${path1%/$file}
$ echo $dir
/tmp
在全局级别可见,则可以将导入(A
)放在函数中。如果你真的不想在本地范围内使用模块对象,你也可以这样做,但我不推荐它。
如果模块imp.load_source
是一个python源文件,你可以在文件中读取(或者甚至只是你想要的相关部分)并在其上运行一个exec。
A
假设您有一些想要MY_GLOBAL_VAR = 1
def my_func():
print 'hello'
my_func
请注意,您还将在文件中定义其他任何内容(例如path = '/path/to/source.py'
execfile(path)
my_func()
# 'hello'
)。再次,这将有效,但我不推荐它
MY_GLOBAL_VAR
的来源。my_func
导入做同样的事情,这在python中通常是不受欢迎的,因为你可能会将各种各样的东西导入到你不想要的命名空间中。即使它现在有效,如果源代码发生变化,它也可能导入影响您自己的全局符号的名称。