如何在模块中导入lib文件夹

Paul Liang

我有一个GAE应用程序,其中包含三个模块和一个lib文件夹。当我尝试从lib文件夹导入第3方库时。GAE弹出一个ImportError。

我可以通过将./lib链接到./Module_1/lib和./Module_2/lib并在每个模块中创建一个appengine_config.py来使其工作。但是这样做似乎很脏。
有没有更干净的方法可以从module_1和module_2导入app_root / lib?

这似乎很有希望(https://cloud.google.com/appengine/docs/python/config/appconfig#Python_app_yaml_Includes),但不知道在include.yaml中放入什么。

-- App Root/
    -- Module_1/
       module_1.yaml 
       module_1.py

    -- Module_2/
       module_2.yaml
       module_2.py

    -- lib/ 
       -- cloudstorage/
          ..
       -- 3rd_library_1/
          ..
          ..
       -- 3rd_library_2/
          ..
          ..

    appengine_config.py
    main.py (default module)
    app.yaml(default module)
    queue.yaml
    dispatch.yaml

在module_1.py或module_2.py中,当我这样做时

    import cloudstorage as gcs

它抱怨

    ImportError: No module named cloudstorage

但是,当将其导入main.py中时,它可以正常工作。

在appengine_config.py中:

import os
import sys

# Add ./lib to sys path
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'lib'))

还尝试从main.py打印sys.path:

sys.path in main.py :
[ 
  '/base/data/home/apps/s~my-app/2.381942946570489905', 
  '/base/data/home/apps/s~my-app/2.381942946570489905/lib', 
  ...
  ...
 ]  

模块_1.py中的sys.path:

 [
  '/base/data/home/apps/s~my-app/module_1:2.381942955973772449',      
  '/base/data/home/runtimes/python27/python27_dist/lib/python27.zip', 
   ...
   ...
  ]
Paul Liang

感谢Google Cloud Platform技术解决方案代表Adam:

可能未明确说明模块文档,但是文件夹'Module1','Module2'以及默认模块实际上在单独的实例中的单独Python虚拟环境中运行,并且需要独立存在。他们无法“看到”本地文件系统上存在的其上方的任何目录,并且“ default.py”无法看到每个模块目录中的任何内容。整个文件夹树不会复制到每个模块实例。

他建议不要复制符号链接,而只需将./lib复制到每个模块中。

我不太喜欢这个主意。

首先,这些模块共享一些基类,复制它们实际上是一种反模式。

其次,将lib文件夹复制到任何地方都会破坏单元测试,因为鼻子会尝试运行它可以运行的所有单元测试,这也是因为明确地排除目录是很痛苦的。

归根结底,我写了一个makefile来帮助简化部署/测试...

# Create simlinks before deployment.
deploy: mksimlnks
    appcfg.py --oauth2 update $(CURDIR)/app.yaml
    appcfg.py --oauth2 update $(CURDIR)/MODULE_1/module_1.yaml
    appcfg.py --oauth2 update $(CURDIR)/MODULE_2/module_2.yaml
    appcfg.py --oauth2 update_queues $(CURDIR)

mksimlnks:
    ln -s $(CURDIR)/lib $(CURDIR)/MODULE_1/lib
    ln -s $(CURDIR)/lib $(CURDIR)/MODULE_2/lib

# Need to remove symlinks before unittest
# or unit test will explode.
test: rmsimlnks
    nosetests --exclude-dir=lib --with-gae -w $(CURDIR) --with-coverage --cover-html

# Remove all symlinks
rmsimlnks:
    rm -rf $(shell find * -type l)

# remove symlinks and other stuff
clean: rmsimlnks
    rm -f $(shell find * -name *.pyc)
    rm -f $(shell find * -name .DS_Store)
    rm -f .coverage
    rm -rf $(CURDIR)/cover

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在PHP中导入Web文件夹

来自分类Dev

如何使用webpack在npm软件包子文件夹中导入模块?

来自分类Dev

如何从文件夹导入模块

来自分类Dev

如何从下一个js的节点模块外部的文件夹中导入模块

来自分类Dev

在子文件夹中导入Python

来自分类Dev

在文件夹中导入csv

来自分类Dev

在Xcode中导入文件夹

来自分类Dev

如何在phoenix中的“ / lib”文件夹中访问模块?

来自分类Dev

如何在Ruby on Rails的lib文件夹中创建模块?

来自分类Dev

如何在 Rails 5 中将 app/lib 文件夹中的模块要求为 rspec

来自分类Dev

从其他文件夹导入模块:如何在Spyder或PyCharm中显示函数参数?

来自分类Dev

从其他文件夹导入模块:如何在Spyder或PyCharm中显示函数参数?

来自分类Dev

如何在文件系统中导入外部模块?

来自分类Dev

在python的父文件夹中导入自定义模块

来自分类Dev

如何从父文件夹的父目录导入模块?

来自分类Dev

如何从相邻文件夹中正确导入python模块?

来自分类Dev

如何制作python导入模块和文件夹?

来自分类Dev

从文件夹导入python模块

来自分类Dev

从特定文件夹导入模块

来自分类Dev

如何从文件夹中n个csv文件中导入数据?

来自分类Dev

如何在AWS Lambda中加载lib文件夹?

来自分类Dev

如何在Python中导入liblas模块?

来自分类Dev

如何在Python中导入liblas模块?

来自分类Dev

如何在IPython集群中导入模块

来自分类Dev

如何在测试中导入测试模块?

来自分类Dev

如何从Flash Builder项目中的链接文件夹资源中导入包?

来自分类Dev

如何在netbeans中的Java应用程序项目的“ / dist”文件夹中导入.JAR文件以使其日食

来自分类Dev

Python无法在相同的文件夹结构中导入包

来自分类Dev

如何从文件夹中的python文件和同一目录中的文件中导入文件?

Related 相关文章

  1. 1

    如何在PHP中导入Web文件夹

  2. 2

    如何使用webpack在npm软件包子文件夹中导入模块?

  3. 3

    如何从文件夹导入模块

  4. 4

    如何从下一个js的节点模块外部的文件夹中导入模块

  5. 5

    在子文件夹中导入Python

  6. 6

    在文件夹中导入csv

  7. 7

    在Xcode中导入文件夹

  8. 8

    如何在phoenix中的“ / lib”文件夹中访问模块?

  9. 9

    如何在Ruby on Rails的lib文件夹中创建模块?

  10. 10

    如何在 Rails 5 中将 app/lib 文件夹中的模块要求为 rspec

  11. 11

    从其他文件夹导入模块:如何在Spyder或PyCharm中显示函数参数?

  12. 12

    从其他文件夹导入模块:如何在Spyder或PyCharm中显示函数参数?

  13. 13

    如何在文件系统中导入外部模块?

  14. 14

    在python的父文件夹中导入自定义模块

  15. 15

    如何从父文件夹的父目录导入模块?

  16. 16

    如何从相邻文件夹中正确导入python模块?

  17. 17

    如何制作python导入模块和文件夹?

  18. 18

    从文件夹导入python模块

  19. 19

    从特定文件夹导入模块

  20. 20

    如何从文件夹中n个csv文件中导入数据?

  21. 21

    如何在AWS Lambda中加载lib文件夹?

  22. 22

    如何在Python中导入liblas模块?

  23. 23

    如何在Python中导入liblas模块?

  24. 24

    如何在IPython集群中导入模块

  25. 25

    如何在测试中导入测试模块?

  26. 26

    如何从Flash Builder项目中的链接文件夹资源中导入包?

  27. 27

    如何在netbeans中的Java应用程序项目的“ / dist”文件夹中导入.JAR文件以使其日食

  28. 28

    Python无法在相同的文件夹结构中导入包

  29. 29

    如何从文件夹中的python文件和同一目录中的文件中导入文件?

热门标签

归档