Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.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
用Python处理公共文件_Python_Python 2.7 - Fatal编程技术网

用Python处理公共文件

用Python处理公共文件,python,python-2.7,Python,Python 2.7,我有一个严重依赖数据库凭据的项目,可以方便地将它们放在一个位置,但我有许多子文件夹需要导入该文件。通过大量的搜索,似乎有很多(次优/过于复杂)的方法可以做到这一点,但我想知道在多个目录中包含一个文件的最简单方法是什么 project/ credentials.py task1/ fileA.py task2/ fileB.py 其中credentials.py如下所示: database = "my_database" database_us

我有一个严重依赖数据库凭据的项目,可以方便地将它们放在一个位置,但我有许多子文件夹需要导入该文件。通过大量的搜索,似乎有很多(次优/过于复杂)的方法可以做到这一点,但我想知道在多个目录中包含一个文件的最简单方法是什么

project/
    credentials.py
    task1/
       fileA.py
    task2/
       fileB.py
其中
credentials.py
如下所示:

database = "my_database"
database_user = "me"
database_password = "password"
fileA.py
fileB.py
中导入
credentials.py
内容的最佳方法是什么?有没有一种完全不同的更好的方式来组织这个项目


编辑:是否有一种方法可以实现这一点,使我从哪个目录运行每个任务都无关紧要?

您只需将
导出PYTHONPATH=$PYTHONPATH:/path/to/directory/with/credentials
添加到
~/.bashrc
,重新打开shell,然后使用
导入凭据即可

这是假设您的系统是基于UNIX的系统


对于windows,说明您可以添加
set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib
到您的
autoexec.bat
文件
msconfig
是此文件的图形界面。

我今天碰巧遇到了同样的问题。可以在fileA.py和fileB.py中插入以下内容:

import sys, os
# prepend parent directory to path
sys.path = [os.path.join(os.path.dirname(__file__), os.pardir)] + sys.path
import credentials

你退房了吗?的确是这样。我试图通过基本上创建一个
凭证
模块来解决这个问题,但我无法使其正常工作。也许发布一个关于为什么不能使其正常工作的问题会对您更有利我想您是想说我应该将
项目
视为一个包,每个任务和凭证都是模块吗?哎呀,打字很匆忙。谢谢,我现在已经更正了。虽然这是可行的,但我觉得在多开发者环境中工作是相当复杂的。