如何访问未安装在虚拟环境中的项目虚拟环境中的文件

时间:2016-06-28 15:58:30

标签: python flask module virtualenv

我有一个具有以下结构的烧瓶应用程序(使用共享虚拟环境):

|-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')

有类似的结果

该应用程序工作正常,但我需要导入相应的模块。

2 个答案:

答案 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

这些文件夹可能被隐藏。因此,在搜索时,请确保您还指定搜索隐藏文件或文件夹。

我对这些环境不熟悉,因此不知道有一个更干净的解决方案。理想情况下,应该有一种方法可以指定要搜索的文件夹列表,以防在特定环境中丢失文件夹。