我想开发一个基于模块化的python应用程序。 这是我的第一个python应用程序,所以我尽量总结我的情况:
我用Python编写了几个月的代码。现在我正在开发一个统计问题的应用程序。由于我不想把我的代码编写成一个无休止的.py文件,我打算在单个py文件和相关文件夹中组织我的应用程序。因此,每个py文件都与另一个.py文件可以使用的功能相关。
举例说明我的应用程序文件夹结构:
我的目录结构是:
Notebook.ipynb
__init__.py
A/
function1.py
function2.py
function3.py
__init__.py
B/
function4.py
function5.py
function6.py
__init__.py
C/
imp.csv
应用程序应从notebook.ipynb执行并使用这些功能。 E.g:
Notebook.ipynb
(uses) --> function1.py
(uses) --> function4.py
(imports) --> imp.csv
我在这里寻找方法来实现:
我发现我可以将模块(.py文件)导入到其他.py文件中。
关于我的例子:function1.py将从兄弟文件夹B导入function4.py。由于文件夹A和B是silbings,确定某个脚本的相对路径的功能将帮助我。但是我在使用最常见的实现方法时遇到了问题。我用过:
__file__
抛出错误“name file 未定义”
os.path.abspath("..") //
返回“C:/ USERS”,它绝对不是我执行的脚本的父文件夹(真正的路径比那个更深;像C:USERS / name / folder1 / folder2 / applicationfolder / folderA)
备注:我没有运行整个脚本,而是(出于测试目的)Spyder3(Python3.6)中的单个语句。我的假设是问题与单个语句的执行有关。
我的问题是:
- 我的假设是否正确?
- 如果是:我如何测试.py文件的导入?
- 如果否:这里有什么问题?
- 关于最终的最终申请。我需要一个声明,确保为脚本提供相对路径 包含而不是导入它的脚本,只使用它 包含功能。所以关于我的例子:
当 Notebook.ipynb(使用) - > function1.py
function1.py(使用) - > function4.py
function4.py(进口) - > 1.csv
我想要 确保虽然笔记本电脑是整体的被调用者 应用程序,function1.py和function4.py中的语句不是 在运行时返回Notebook.ipynb的文件夹。
因为在 从另一个文件夹加载csv文件会有问题 function4.py。
很多人提前感谢!! :))
PS:我也对其他有助于构建我的应用程序源代码的建议持开放态度