如何从具有相同名称的2个python文件中加载具有相同名称的2个函数?

声压级

我遇到进口问题。我想做的是从具有相同名称的模块中导入具有相同名称的2个函数。请注意,我正在Pycharm中进行此操作。

我有以下目录结构:

test_import 
|--foo.py  
|--main.py  
|--test
   |--foo.py  

foo.py 在test_import文件夹中看起来像:

def print_arg(x):
    print('print 1: {}'.format(x))

foo.py 在测试文件夹中看起来像:

def print_arg(x):
    print('print 2: {}'.format(x))

这是我main.py在其中导入的代码print_arg

import sys
from foo import print_arg as print_arg
print_arg(1)
sys.path.insert(1, './test')
from foo import print_arg as print_arg_2
print_arg(1)
print_arg_2(1)

我希望这可以打印

print 1: 1
print 1: 1
print 2: 1

但它打印

print 1: 1
print 1: 1
print 1: 1

不知何故,第二次导入不起作用,并print_arg_2成为的引用print_arg通过以其他方式进行导入来说明这一点:

sys.path.insert(1, './test')
from foo import print_arg as print_arg_2
print_arg_2(1)
sys.path.pop(1)
from foo import print_arg
print_arg(1)
print_arg(1)
print_arg_2(1)

打印:

print 2: 1
print 2: 1
print 2: 1

将test / foo.py中的函数名称更改为print_arg_2不起作用,这将导致错误。似乎foo.py已在项目文件夹中创建了对它的引用,并且它尝试从那里导入,而不是在其他目录中查找sys.path

Traceback (most recent call last):
  File "C:\Users\jeroe\AppData\Local\Programs\Python\Python37\lib\site-packages\IPython\core\interactiveshell.py", line 3326, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-2-10fe80aec78f>", line 5, in <module>
    from foo import print_arg_2 as print_arg_2
ImportError: cannot import name 'print_arg_2' from 'foo' (C:\Users\jeroe\PycharmProjects\test_import\foo.py)

foo.py测试文件夹中的文件名更改为例如foo2.py可以。但是我不希望更改文件名。

所以我有两个问题:

  1. 有人可以解释一下这是怎么回事吗?

  2. 有什么更好的方法来导入这两个函数而不必更改文件(模块)名称?

高贵

首先,您必须__init__.py在测试文件夹中添加一个空文件,以便可以导入第二个foo文件。

其次,导入时必须将完整的相对路径写入第二个文件。现在,您正在两次导入第一个foo文件。

只需将第二个导入行修改为:

from test.foo import print_arg as print_arg_2

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在git的2个不同分支中合并2个具有相同名称的文件

来自分类Dev

LuaJ从两个不同的LuaScript中加载两个具有相同名称的函数

来自分类Dev

如何检查2个具有相同名称的复选框

来自分类Dev

如何禁用具有相同名称的2个输入之一

来自分类Dev

如何检查2个具有相同名称的复选框

来自分类Dev

具有相同名称的Javascript函数

来自分类Dev

如何单击 2 个具有相同名称、无 ID 和相同类的链接中的 1 个。硒Java

来自分类Dev

如何在2个DLL中区分具有相同名称(和名称空间)的两个类?

来自分类Dev

Python中两个具有相同名称的函数

来自分类Dev

如何区分两个具有相同名称的.snk文件?

来自分类Dev

声明两个具有相同名称的变量

来自分类Dev

具有相同名称的两个输入

来自分类Dev

2个具有相同名称和域但路径不同的cookie

来自分类Dev

从2个表中添加具有相同名称的数量

来自分类Dev

序列化具有相同名称但不同属性的2个属性

来自分类Dev

Python:具有相同名称的函数和变量

来自分类Dev

Python:具有相同名称的函数和变量

来自分类Dev

python中具有相同名称的函数的子类

来自分类Dev

添加到 PATH 的 2 个文件夹包含具有相同名称的不同文件

来自分类Dev

Python:具有相同名称的模块和文件

来自分类Dev

C ++函数被另一个DLL中具有相同名称的函数隐藏

来自分类Dev

将文件拆分为N个具有相同名称但目标目录不同的文件

来自分类Dev

创建两个具有相同名称但参数类型不同的R函数

来自分类Dev

如何在1个变量下打开两个具有相同名称的文件以实现差异功能?

来自分类Dev

无法解决SVN冲突-存储库中两个具有相同名称的文件

来自分类Dev

同一目录中的两个具有相同名称的文件

来自分类Dev

Specman为什么不能导入两个具有相同名称的文件?

来自分类Dev

在另一个位置查找并创建具有相同名称的空文件

来自分类Dev

PDF合并两个具有相同名称的文件

Related 相关文章

  1. 1

    在git的2个不同分支中合并2个具有相同名称的文件

  2. 2

    LuaJ从两个不同的LuaScript中加载两个具有相同名称的函数

  3. 3

    如何检查2个具有相同名称的复选框

  4. 4

    如何禁用具有相同名称的2个输入之一

  5. 5

    如何检查2个具有相同名称的复选框

  6. 6

    具有相同名称的Javascript函数

  7. 7

    如何单击 2 个具有相同名称、无 ID 和相同类的链接中的 1 个。硒Java

  8. 8

    如何在2个DLL中区分具有相同名称(和名称空间)的两个类?

  9. 9

    Python中两个具有相同名称的函数

  10. 10

    如何区分两个具有相同名称的.snk文件?

  11. 11

    声明两个具有相同名称的变量

  12. 12

    具有相同名称的两个输入

  13. 13

    2个具有相同名称和域但路径不同的cookie

  14. 14

    从2个表中添加具有相同名称的数量

  15. 15

    序列化具有相同名称但不同属性的2个属性

  16. 16

    Python:具有相同名称的函数和变量

  17. 17

    Python:具有相同名称的函数和变量

  18. 18

    python中具有相同名称的函数的子类

  19. 19

    添加到 PATH 的 2 个文件夹包含具有相同名称的不同文件

  20. 20

    Python:具有相同名称的模块和文件

  21. 21

    C ++函数被另一个DLL中具有相同名称的函数隐藏

  22. 22

    将文件拆分为N个具有相同名称但目标目录不同的文件

  23. 23

    创建两个具有相同名称但参数类型不同的R函数

  24. 24

    如何在1个变量下打开两个具有相同名称的文件以实现差异功能?

  25. 25

    无法解决SVN冲突-存储库中两个具有相同名称的文件

  26. 26

    同一目录中的两个具有相同名称的文件

  27. 27

    Specman为什么不能导入两个具有相同名称的文件?

  28. 28

    在另一个位置查找并创建具有相同名称的空文件

  29. 29

    PDF合并两个具有相同名称的文件

热门标签

归档