【问题标题】:Make library folder visible to all python scripts in different dir/subdir with a GAE project directory使用 GAE 项目目录使库文件夹对不同 dir/subdir 中的所有 python 脚本可见
【发布时间】:2012-02-19 07:49:51
【问题描述】:

我的 GAE 项目有以下目录结构:

项目:

  • 库:
    • lib1.py
    • lib2/x.py
    • lib2/y.py
  • 应用程序:
    • app1/app1.py
    • app2/app2.py
    • app2/async.py

如何使库文件夹对将在应用程序目录及其子目录中创建的任何应用程序可见?

【问题讨论】:

    标签: python google-app-engine


    【解决方案1】:

    或者,可以将library 目录添加到sys.path

    在库文件夹中创建一个__init__.py。

    import os
    import sys
    
    def add_lib_path():
        lib_directory = os.path.dirname(os.path.abspath(__file__))
        if lib_directory not in sys.path:
           sys.path.insert(0, lib_directory)
    

    在您从library 文件夹导入库的每个文件中,在导入语句之前添加以下代码:

    from lib import add_lib_path
    add_lib_path()
    

    在这种情况下,您导入的所有库都会按预期运行。

    【讨论】:

      【解决方案2】:

      PYTHONPATH 指定一系列文件夹以开始搜索导入的模块。

      GAE 将包含 app.yaml 的文件夹添加到您的 PYTHONPATH。

      因此,假设 app.yaml 位于该结构的根目录(即包含“库”和“应用程序”的文件夹),那么您的任何应用都可以相对于那里导入...

        from library import lib1
      
        from library/lib2 import x
      

      【讨论】:

      • 请注意,如果不调整路径,您可能会在许多库中随机损坏。许多库使用绝对导入,因此它们将无法正确导入其子组件。还要注意有语法错误,'/'应该是'.'。
      猜你喜欢
      • 2019-03-20
      • 1970-01-01
      • 2019-03-10
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 2021-06-13
      • 1970-01-01
      相关资源
      最近更新 更多