Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种方便的方法来翻译“a”字;从A进口B作为C“;使用特定路径导入python_Python_Python Import - Fatal编程技术网

有没有一种方便的方法来翻译“a”字;从A进口B作为C“;使用特定路径导入python

有没有一种方便的方法来翻译“a”字;从A进口B作为C“;使用特定路径导入python,python,python-import,Python,Python Import,我希望导入python模块,而不将其包含文件夹添加到python路径。我想让进口看起来像 from A import B as C 由于需要使用特定的路径,导入如下所示 import imp A = imp.load_source('A', 'path') C = A.B 对于长路径和模块名,这是非常不容易的。有没有更简单的方法?是否有一种方法,不将模块添加到局部变量(无A)?如果您只是不希望A在全局级别可见,可以将导入(imp.load\u source)粘贴到函数中。如果您实际上根本不想

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

from A import B as C
由于需要使用特定的路径,导入如下所示

import imp
A = imp.load_source('A', 'path')
C = A.B

对于长路径和模块名,这是非常不容易的。有没有更简单的方法?是否有一种方法,不将模块添加到局部变量(无A)?

如果您只是不希望
A
在全局级别可见,可以将导入(
imp.load\u source
)粘贴到函数中。如果您实际上根本不想在本地范围内使用模块对象,您也可以这样做,但我不推荐这样做

如果模块
A
是一个python源文件,您可以读取该文件(甚至只是您想要的相关部分)并在其上运行exec

source.py 假设您有一些代码想要
my_func

path = '/path/to/source.py'
execfile(path)

my_func()
# 'hello'
请注意,您还将获得文件中定义的任何其他内容(如
MY\u GLOBAL\u VAR
)。再说一次,这也行,但我不推荐

  • 查看您的代码的人将无法看到
    my_func
    的来源
  • 实际上,您所做的事情与导入中的
    是一样的*
    import,这在python中通常是不受欢迎的,因为您可能会将所有不想要的东西导入到名称空间中。即使它现在可以工作,如果源代码发生更改,它也可以导入隐藏在您自己的全局符号后面的名称
  • 这可能是一个安全漏洞,因为您可能正在执行一个不受信任的源文件
  • 它比常规的python导入要详细得多

所以我想澄清一下;例如,您在/usr/local/sbin中有一个库包/模块,您希望将其导入到/home/you/?或者类似的东西?不完全是。我想从父目录导入一个包,而这个包也可以在python路径中找到(不同的版本),正常的导入总是会导致导入在python路径中找到的版本。
path = '/path/to/source.py'
execfile(path)

my_func()
# 'hello'