我有一个简单的python项目,其目录结构如下:
sample-project/
main/
config/
config.yaml
docker/
Dockerfile
tests/
__init__.py
sometests.py
config.py
run.py
__init__.py
requirements.txt
README.rst
在config.py文件中,我有:
import yaml
class Config:
def __init__(self):
with open("config/config.yaml", 'r') as ymlfile:
cfg = yaml.load(ymlfile)
self.host = cfg["mysql"]["host"]
self.database = cfg["mysql"]["database"]
self.user = cfg["mysql"]["user"]
self.password = cfg["mysql"]["password"]
my_config = Config()
在run.py文件中,我有一个导入语句,如下所示:
from main.config import my_config
当我使用命令行运行python3.5 run.py时,我得到错误:
从主要。配置导入my_config
ImportError:没有名为“main”的模块
但当我在运行中添加此项时。py导入它的工作原理:
import sys
sys.path.append('/home/tomas/sample-project/')
除了给出绝对路径或其他方式之外,还有其他更好的方法吗?请举例说明:)
虽然我同意AKX的观点,即编辑您的路径是要避免的,但我通常会建议以下方法:
import sys
from os.path import dirname
abs_dir = dirname(__file__)
sys.path.append(abs_dir)
__file__
变量提供对访问它的文件位置的访问。这允许您获取项目中任何文件的绝对路径。
当下面提到从主.配置导入my_config
保持目录路径,例如:从示例项目/main。配置导入my_config
假设您在/home/tomas中执行
通常,永远不要触摸<code>系统。程序中的路径。
因为main/
(不是最好的名称)包含__init__。py
,我们将它视为一个包,因此让它作为一个包运行。这样,进口将被正确考虑。
添加主/__main__.py
例如
from main.run import run
if __name__ == "__main__":
run()
然后运行你的应用
python -m main
而不是
python main/main.py
要设置flexbox项目之间的最小距离,我使用上的和Container上的。对我来说,这似乎是一个黑客,但我找不到任何更好的方法来做到这一点。 示例 null null
问题内容: 我目前正在使用以下功能比较字典值。有更快或更更好的方法吗? 编辑:两个字典包含相同的键。 问题答案: 如果字典具有相同的键集,并且您需要所有这些打印件以实现任何值差异,那么您将无能为力。也许像这样: 几乎等同于您所拥有的,但是您可能会得到更好的演示,例如在循环使用diffkey之前对其进行排序。
除了把它们全部输入外,还有没有更好的方法在字符串中列出它们?
问题内容: 要设置我在容器上和容器上使用的flexbox项之间的最小距离。对我来说,这似乎是一种hack,但是我找不到更好的方法来做到这一点。 例 问题答案: Flexbox的利润率没有下降。 Flexbox没有类似于表的任何东西(除了CSS属性,大多数浏览器都无法很好地支持CSS属性,caniuse) 因此,实现您的要求会有点困难。 以我的经验,不使用/ 且不作任何修改就可以工作的“最干净”的方
如何将gson添加到我与gradle的项目中?我只看到人们在他们的项目中添加文件。我不想下载这个项目并把它放在我的项目中。