有没有一种方便的方法可以将来自A导入B的"翻译为C"使用特定路径进行python导入

时间:2016-01-08 17:21:28

标签: python python-import

我想导入python模块而不将其包含的文件夹添加到python路径。我希望导入看起来像

<div class='anim'></div>

由于应使用的特定路径,导入类似于

from A import B as C

这对于长路径和模块名称来说非常不方便。有没有更简单的方法?有没有一种方法,模块没有添加到局部变量(没有A)?

1 个答案:

答案 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。

source.py

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中通常是不受欢迎的,因为你可能会将各种各样的东西导入到你不想要的命名空间中。即使它现在有效,如果源代码发生变化,它也可能导入影响您自己的全局符号的名称。
  • 这可能是一个安全漏洞,因为您可能会执行不受信任的源文件。
  • 这比普通的python导入更冗长。