files/ main.py SubfileA/ __init__.py "from util1 import help" util1.py "def help(): print ...A..." SubfileB/ __init__.py "from util1 import help" util1.py "def help(): print ...B..."
SubfileA和SubfileB中的和util1.py具有不同的内容.
我想通过某种方式用户可以指定要导入的util1.py.
我期待的是:
if subfileA: from SubfileA import * else: from SubfileB import *
util1.py具有相同的API,但实现方式不同.
为什么我这样做的原因,因为如果我将两个util1.py组合在一起,代码将变得丑陋且难以维护.希望有人能给我一个解决方案,或者任何建议都会很棒!
我尝试了那些代码,但是我收到了警告(它确实有效,但警告令人尴尬):
main.py:4: SyntaxWarning: import * only allowed at module level def main():main.py:4: SyntaxWarning: import * only allowed at module level def main():
大家.我想我找到了解决方案.但我认为这不是好的编程风格.
files/ main.py "from directory import *" directory/ __init__.py "user=raw_input() if user: from directoryA import * else from directoryB import * " directoryA/ __init__.py "from util1 import help1()" util1.py directoryB/ __init__.py "from util1 import help1()" util1.py
的确,这看起来很奇怪.但它完成了这项工作.
解决方法 您需要将每个目录放入from< package>的包中. import …语法工作.要告诉Python一个目录是一个包,只需在每个目录中创建一个空的__init__.py文件.如果您需要特定的行为,具体取决于导入的util1的版本,您可以在每个__init__.py文件中编写初始化代码.
有关更多信息,请查看official documentation on packages.
最终,您的新项目目录树应如下所示:
files/ main.py SubfileA/ __init__.py util1.py SubfileB/ __init__.py util1.py总结
以上是内存溢出为你收集整理的python导出一个目录文件中的两个全部内容,希望文章能够帮你解决python导出一个目录文件中的两个所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)