这是一个看似简单的问题,但事实证明它比预期更难。
我已在以下布局中在pycharm中创建了一个项目
bin
main
helpers
userhelper
models
user
session
tests
userTest
在我的主要内容中,我运行调用所有内容的代码,这就像pycharm中的魅力一样。现在我想在服务器上运行它并用cron启动它。如何在保持所有模块引用的同时从cron启动它?
我想我需要将项目的根添加到python路径中。为此,我添加了以下bash脚本来调用我的项目:
PYTHONPATH="${PYTHONPATH}:/home/steven/projectX"
export PYTHONPATH
python bin/main.py
但这似乎没有做任何事情,在这个项目中定期运行bin / main.py的最佳方法是什么,并且拥有我所有的模块和类似的东西,例如' ConfigParser.RawConfigParser()。read( os.path.abspath则(" ../ configuration.cfg&#34))'相对于我的项目到位了吗?
编辑:我没有尝试修复我的导入或调试我的代码,我在pycharm中有一个大型项目运行模拟,我想在服务器上调用并在我的开发设置中维护。问题是如何以与pycharm相同的方式运行它?答案 0 :(得分:1)
听起来您对制作可分发的Python包很感兴趣。您应该阅读教程here。最终,您将要编写一个setup.py(确定您可以将其称为其他内容,但它就像重命名self
- 为什么这样做?)将配置您的项目。现在有一个建议,因为我看到很多人走错了道路。你永远不想直接修改你的PYTHONPATH。它可能是最快速的解决方案,但它会导致持久的问题。
答案 1 :(得分:0)
所以我在这里找到了处理mu问题的方法。最好的选择显然是创建一个可分发的python包并使用它。但是,由于我正在开发一个具有大量功能和所需结果的模拟,因此每次我想运行项目时都会进行大量调整并且必须创建一个包,这有点超出了我的项目的范围。 我想要做的是能够以类似于我在使用PyCharm的开发机器上执行此操作的方式运行文件。我解决这个问题的方法是将main.py放在项目的根目录中,并获得与执行文件相关的所有引用。这意味着我的userhelper按如下方式查找数据存储区:
path = os.path.join(os.path.dirname(os.path.dirname(__file__)),
"resources/" + settings['datastore_filename']
这解决了我无法在服务器上运行项目的问题,就像在我的电脑上运行一样。