在试着处理相关的进口和阅读了许多关于它的StackOverflow的帖子后,我开始意识到这比它需要的复杂得多。在
除了我没人用这个代码。我没有创建工具或api,所以我认为没有必要创建“包”或“模块”。我只想将代码组织到文件夹中,而不是将50个脚本都放在同一个目录中。太荒谬了。在
基本上,只想有三个文件夹,并能够导入脚本从任何地方我想。一个文件夹,其中包含一些具有实用功能的脚本。另一个文件夹包含大部分代码,另一个文件夹包含一些实验(我正在进行机器学习研究)。在
/project/code/
/project/utils/
/project/experiments/
我只需要在文件夹之间导入python文件。在
我发现的一个解决方案是将__init__.py
文件放入每个目录,包括文件夹所在的根目录。但是我需要在这个目录的父目录中运行我的实验。在
所以上面的工作。但是我有两个问题。我的实验和代码不在同一个文件夹中。这很烦人,但我想我能忍受。但更大的问题是我不能把我的实验放在不同的文件夹里:
/experiments/experiment1/something.py
/experiments/experiment2/something_else.py
/project/__init__.py
/project/code/__init__.py
/project/utils/__init__.py
我想我可以将项目目录符号链接到每个实验文件夹中,但这太荒谬了。在
另一种方法是把一切都当作一个模块来处理:
/project/__init__.py
/project/code/__init__.py
/project/utils/__init__.py
/project/experiments/__init__.py
/project/experiments/experiment1/something.py
/project/experiments/experiment2/something_else.py
但是我必须用python -m project.experiments.experiment1.something
来做实验,这对我来说很奇怪。在
到目前为止,我找到的解决方案是:
import imp
import os
currentDir = os.path.dirname(__file__)
filename = os.path.join(currentDir, '../../utils/helpful.py')
helpful = imp.load_source('helpful',filename)
这是可行的,但它是乏味和丑陋的。我尝试创建一个脚本来处理这个问题,但是os.path.dirname(__file__)
是错误的。在
当然,有人在我的位置上试图将他们的python脚本组织到文件夹中,而不是把它们都放在一个目录中。在
这个问题有没有一个好的、简单的解决方案,或者我将不得不求助于上面的一个?在
所以我发现this教程非常有用。在
我提出的解决方案如下:
然后我运行
python setup.py develop
以符号链接我的代码,这样我就可以将它导入到任何其他地方(你可以取消与python setup.py develop uninstall
的链接)。在我还没有决定我的实验是在项目文件夹里还是在外面。我不认为这真的很重要,因为这段代码只供我个人使用。但我想它应该住在外面。。。在
将python文件作为模块运行对我来说也很奇怪。通过在根目录下放一个
main.py
文件,您可以将您的实验放在一个文件夹中。因此文件夹树如下所示:在
main.py
文件上调用实验,并在main.py
文件上进行导入。__init__.py
也应该在每个文件夹中。在这样,就不需要将py文件作为python模块运行。此外,项目将有一个单一的入口点,这在许多情况下非常有用。在
相关问题 更多 >
编程相关推荐