Reputation: 136351
I have created a virtualenv and installed SQLAlchemy in it:
$ virtualenv alchemy
$ source alchemy/bin/activate
$ pip install sqlalchemy
import
works in python:
$ python
Python 2.7.5 (default, Mar 9 2014, 22:15:05)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlalchemy
>>> print sqlalchemy.__version__
0.9.7
But it does not work in bpython:
>>> import sqlalchemy
Traceback (most recent call last):
File "<input>", line 1, in <module>
ImportError: No module named sqlalchemy
Why can't bpython find the package installed in the virtualenv, even though it is executed after source alchemy/bin/activate
is called?
Upvotes: 20
Views: 4496
Reputation: 177
If bpython
does not exists in your venv bin folder you can find it with
sudo find / -name bpython
. In my case it got installed in ~/.local/bin/
$ source alchemy/bin/activate
$ pip install bpython
...
$ ~/.local/bin/bpython
Upvotes: 0
Reputation: 41
Run bpython as module works for me
mkdir workout && cd workout
venv shell --python=3.8
pipenv install gcloud
pipenv install bpython
python -m bpython
python -m bpython
bpython version 0.21 on top of Python 3.8.5 /home/dennys/.local/share/virtualenvs/workout-qTtsVfjR/bin/python
>>> from gcloud import bigquery
>>>
Upvotes: 2
Reputation: 1015
Bpython must be installed with pip3 inside each virtualenv
$ virtualenv .
$ source bin/activate
$ pip3 install bpython
$ pip3 install sqlalchemy
$ bpython
>>> import slqalchemy
Upvotes: 2
Reputation: 505
bpython
has the python it was installed with hardcoded in its shebang.
You can manually edit it to make it use the current python. Open the script by running for instance $ vi $(which bpython)
.
Then change the top line from eg. #!/usr/bin/python3
to eg. #!/usr/bin/env python3
.
That should make it run using the venv's python. It's not supported officially by bpython but it has always worked for me on both Mac OS X and Ubuntu.
Upvotes: 9
Reputation: 136351
bpython
must be installed in the virtualenv, otherwise the external, system-wide bpython is called:
$ source alchemy/bin/activate
(alchemy)[ 10:34PM ] [ adamatan@rubidium:/tmp ]
$ pip install bpython
...
$ alchemy/bin/bpython
--------------
>>> import sqlalchemy
>>> print sqlalchemy.__version__
0.9.7
Upvotes: 32