IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    django 直接运行目录下py 文件

    obaby发表于 2025-01-07 02:16:01
    love 0

    为了处理数据,直接写了一个文件用来处理解析数据。然而比较诡异的一点是,使用 pycharm 可以直接运行这个文件,不会报错。但是,如果用命令运行就直接报错了。

    上面是 pycharm 的运行效果,下面是直接命令运行的效果。

    (venv) PS E:\Pycharm_Projects\powersystem> E:\Pycharm_Projects\powersystem\venv\Scripts\python.exe E:\Pycharm_Projects\powersystem\application\data_process_test.py 
    Traceback (most recent call last):
      File "E:\Pycharm_Projects\powersystem\application\data_process_test.py", line 17, in <module>
        django.setup()
      File "E:\Pycharm_Projects\powersystem\venv\lib\site-packages\django\__init__.py", line 19, in setup
        configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
      File "E:\Pycharm_Projects\powersystem\venv\lib\site-packages\django\conf\__init__.py", line 82, in __getattr__
        self._setup(name)
      File "E:\Pycharm_Projects\powersystem\venv\lib\site-packages\django\conf\__init__.py", line 69, in _setup
        self._wrapped = Settings(settings_module)
      File "E:\Pycharm_Projects\powersystem\venv\lib\site-packages\django\conf\__init__.py", line 170, in __init__
        mod = importlib.import_module(self.SETTINGS_MODULE)
      File "G:\Python3.10.6\lib\importlib\__init__.py", line 126, in import_module
        return _bootstrap._gcd_import(name[level:], package, level)
      File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
      File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
      File "<frozen importlib._bootstrap>", line 992, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
      File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
      File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
      File "<frozen importlib._bootstrap>", line 1004, in _find_and_load_unlocked
    ModuleNotFoundError: No module named 'application'

    提示的错误信息是找不到 application,但是这个文件是作为 django 的一部分存在的,按理也不需要去设置什么东西。之前的时候不能运行也就算了,但是现在有台服务器在内网,无法链接内网的的数据库进行数据处理,这就比较麻烦。

    不过既然 pycharm 能运行,那肯定是有些东西不一样,猜测是 pycharm 将当前的目录加入 lib 目录了。添加下面的代码重新运行。

    import os,sys
    
    if __name__ == '__main__':
        # 获取当前脚本所在目录的绝对路径
        current_directory = os.path.abspath(os.path.dirname(__file__))
    
        # 将当前目录添加到sys.path
        sys.path.append("E:/Pycharm_Projects/powersystem/")
        os.environ.setdefault("DJANGO_SETTINGS_MODULE", "application.settings")
        import django
    
        django.setup()
        label =get_device_label(msg['devvar'])
        new_msg = rebuild_msg(msg, label)
        print(new_msg)

    现在一切就 ok 了。

    其他的运行脚本方式:

    https://django-extensions-zh.readthedocs.io/zh-cn/latest/runscript.html

    https://www.jb51.net/article/236739.htm



沪ICP备19023445号-2号
友情链接