2017-10-03 1 views
0

C'est la première fois que je travaille avec un environnement virtuel, donc je ne suis pas sûr de faire quoi que ce soit. J'ai suivi le guide d'installation dans le "tutoriel mega flacon"Impossible d'importer de nouveaux modules dans le projet venv

$ python3 -m venv flask 
$ flask/bin/pip3 install flask 
$ flask/bin/pip3 install flask-login 
$ flask/bin/pip3 install flask-openid 
$ flask/bin/pip3 install flask-mail 
$ flask/bin/pip3 install flask-sqlalchemy 
$ flask/bin/pip3 install sqlalchemy-migrate 
$ flask/bin/pip3 install flask-whooshalchemy 
$ flask/bin/pip3 install flask-wtf 
$ flask/bin/pip3 install flask-babel 
$ flask/bin/pip3 install guess_language 
$ flask/bin/pip3 install flipflop 
$ flask/bin/pip3 install coverage 

Et tout a bien fonctionné. Jusqu'à ce que je me rende compte que j'avais besoin d'un nouveau paquet (yaml et requêtes), je les ai installés comme je le ferais en dehors de l'environnement virtuel avec pip3 install packagename

Je peux importer les paquets dans n'importe quel autre fichier python, je Je peux les importer dans le shell ipython3, mais je ne peux pas les importer dans mon projet. Si je place les dans views.py puis exécutez ./run.py

Je reçois l'erreur

ImportError: No module named 'yaml' 

J'ai essayé de les installer à nouveau avec apt-get mais ne change rien.

mes fichiers ballon sont les suivantes:

run.py

#!flask/bin/python3 
from app import app 
app.run(debug=True) 

__ __.py initialisation

from flask import Flask 

app = Flask(__name__) 
app.config.from_object('config') 

from app import views 

veiws.py

from flask import Flask, render_template, request, session, redirect, url_for 
from app import app 
import time, os, subprocess 
import yaml 

## other stuff that works until I try to import yaml or any new package 
+2

installer '' yaml' et requests' dans votre virtualenv comme vous le faites Wtih les paquets de ballon –

+0

Comme @ J.R.. dit que vous devez vous assurer qu'ils installent des paquets à l'intérieur du venv. IMO c'est plus facile si vous venez d'activer le venv "$ source venv/bin/activate" en supposant que venv est le nom de votre environnement virtuel – BrettJ

Répondre

2

Vous n'êtes pas en mesure d'importer les modules depuis la y ne sont pas installés dans le virtualenv flask que vous avez créé. Résolvez ceci en l'installant de la même manière que les autres modules flask, c.-à-d. suivant votre approche:

$ python3 -m venv flask 
$ flask/bin/pip3 install flask 
$ flask/bin/pip3 install flask-login 
$ flask/bin/pip3 install flask-openid 
$ flask/bin/pip3 install flask-mail 
$ flask/bin/pip3 install flask-sqlalchemy 
$ flask/bin/pip3 install sqlalchemy-migrate 
$ flask/bin/pip3 install flask-whooshalchemy 
$ flask/bin/pip3 install flask-wtf 
$ flask/bin/pip3 install flask-babel 
$ flask/bin/pip3 install guess_language 
$ flask/bin/pip3 install flipflop 
$ flask/bin/pip3 install coverage 
$ flask/bin/pip3 install yaml 
$ flask/bin/pip3 install requests 
+0

Cela le répare! Je ne comprends toujours pas pourquoi le venv n'est pas en mesure d'accéder à ces paquets globaux, même si ça va bien avec d'autres, avez-vous quelque chose à ce sujet? – Indigo

+0

De quels paquets parlez-vous? Btw. vous pouvez utiliser l'indicateur de site système pour hériter des packages de votre référentiel global, par exemple. 'virtualenv --system-site-packages flacon'. –