我有一个具有以下结构的烧瓶应用程序(使用共享虚拟环境):
|-Directory
|----venv/lib/python2.7/site-packages/example-package
|----------module.py
|----app
|----------static
|----------templates
|----------models.py
|--------------...
我需要在虚拟环境目录中的app / models.py模块中访问某些类,例如按照上面的说法,我需要在以下内容中执行以下操作: VENV / LIB / python2.7 /站点包/示例封装/ module.py
from models import TestClass
但是,即使我尝试设置models.py模块的路径,我仍然会收到“ImportError:No module named models”错误。
我试过了:
path = 'absolute path to models'
import os
os.chdir(path)
(我在这里也收到有关“未找到配置”的错误)
和
import sys
sys.path.append('absolute path to models')
有类似的结果
该应用程序工作正常,但我需要导入相应的模块。
答案 0 :(得分:0)
我的问题的答案很简单(我被@jonrsharpe指向了正确的方向)。根据{{3}},我将所需的类添加到库的根目录中,并使用需要覆盖的模块,并使用此语法获得所需的结果,保留原始文件并根据需要提供备用方法
import . module # added my class to a module located at library's root
class ReplaceClass(object): ... # class to override
module.TestClass = ReplaceClass
...瞧
答案 1 :(得分:0)
我在树莓环境中遇到了类似的问题
就我而言,我在以下dist_packages文件夹中找到了flask。 Web服务器烧瓶将在正常环境中运行 但不在虚拟环境中
/ usr / lib / python3 / dist-packages
将这些文件夹(烧瓶,jinga2,werkzeug,markupsafe,其危险的,单击并对应的.egg-info文件夹)复制到站点程序包(虚拟环境中的子文件夹)后,它开始工作
/home/pi/.virtualenvs/cv/lib/python3.5/site-packages
这些文件夹可能被隐藏。因此,在搜索时,请确保您还指定搜索隐藏文件或文件夹。
我对这些环境不熟悉,因此不知道有一个更干净的解决方案。理想情况下,应该有一种方法可以指定要搜索的文件夹列表,以防在特定环境中丢失文件夹。