:: [DNG] Python Virtual Environment st…
Top Page
Delete this message
Reply to this message
Author: Marc Shapiro
Date:  
To: dng
Subject: [DNG] Python Virtual Environment strangeness
A while back, I posted about issues with using yfinance and python's
virtual environments.  I was having problems with getting the venv to
work, even though it seemed fairly straightforward.  I ended up
rewriting the python scrips to avoid using yfinance to get around the
problem.

I decided, however, that I really should get venvs working for the next
time that I write something in python.  So I created a venv and
installed yfinance in it.  As expected, it pulled in a slew of other
packages.  I copied the old version of my program (that requires
yfinance) into the directory containing the venv and tried to run it. 
The results are as follows:

---------- First, it says that it can't find curl_cffi ----------

marc:~/PythonProjects$ source pyquotes-y/.venv/bin/activate
(.venv) marc:~/PythonProjects$ cd pyquotes-y
(.venv) marc:~/PythonProjects/pyquotes-y$ pyquotes-y
Traceback (most recent call last):
  File "/usr/local/bin/pyquotes-y", line 12, in <module>
    import yfinance as yf
  File "/usr/local/lib/python3.13/dist-packages/yfinance/__init__.py",
line 23, in <module>
    from .search import Search
  File "/usr/local/lib/python3.13/dist-packages/yfinance/search.py",
line 26, in <module>
    from .data import YfData
  File "/usr/local/lib/python3.13/dist-packages/yfinance/data.py", line
5, in <module>
    from curl_cffi import requests
ModuleNotFoundError: No module named 'curl_cffi'

---------_ Then, I try to install curl_cffi, but pip says it is already
installed and everything is good -----------

(.venv) marc:~/PythonProjects/pyquotes-y$ pip install curl_cffi
Requirement already satisfied: curl_cffi in
./.venv/lib/python3.13/site-packages (0.11.3)
Requirement already satisfied: cffi>=1.12.0 in
./.venv/lib/python3.13/site-packages (from curl_cffi) (1.17.1)
Requirement already satisfied: certifi>=2024.2.2 in
./.venv/lib/python3.13/site-packages (from curl_cffi) (2025.4.26)
Requirement already satisfied: pycparser in
./.venv/lib/python3.13/site-packages (from cffi>=1.12.0->curl_cffi) (2.22)

---------- And the directory listing shows that curl_cffi is there ---------

(.venv) marc:~/PythonProjects/pyquotes-y$ ls
.venv/lib/python3.13/site-packages
total 1772
drwxrwxr-x  3 marc marc    4096 Jun  9 16:36 beautifulsoup4-4.13.4.dist-info
drwxrwxr-x  5 marc marc    4096 Jun  9 16:36 bs4
drwxrwxr-x  3 marc marc    4096 Jun  9 16:36 certifi
drwxrwxr-x  3 marc marc    4096 Jun  9 16:36 certifi-2025.4.26.dist-info
drwxrwxr-x  3 marc marc    4096 Jun  9 16:36 cffi
drwxrwxr-x  2 marc marc    4096 Jun  9 16:36 cffi-1.17.1.dist-info
-rwxrwxr-x  1 marc marc 1115040 Jun  9 16:36
_cffi_backend.cpython-313-x86_64-linux-gnu.so
drwxrwxr-x  4 marc marc    4096 Jun  9 16:36 charset_normalizer
drwxrwxr-x  3 marc marc    4096 Jun  9 16:36
charset_normalizer-3.4.2.dist-info
drwxrwxr-x  4 marc marc    4096 Jun  9 16:36 curl_cffi
drwxrwxr-x  3 marc marc    4096 Jun  9 16:36 curl_cffi-0.11.3.dist-info
drwxrwxr-x  6 marc marc    4096 Jun  9 16:36 dateutil
drwxrwxr-x  3 marc marc    4096 Jun  9 16:36 frozendict
drwxrwxr-x  2 marc marc    4096 Jun  9 16:36 frozendict-2.4.6.dist-info
drwxrwxr-x  4 marc marc    4096 Jun  9 16:36 google
drwxrwxr-x  3 marc marc    4096 Jun  9 16:36 idna
drwxrwxr-x  2 marc marc    4096 Jun  9 16:36 idna-3.10.dist-info
drwxrwxr-x  3 marc marc    4096 Jun  9 16:36 multitasking
drwxrwxr-x  2 marc marc    4096 Jun  9 16:36 multitasking-0.0.11.dist-info
drwxrwxr-x 24 marc marc    4096 Jun  9 16:36 numpy
drwxrwxr-x  2 marc marc    4096 Jun  9 16:36 numpy-2.3.0.dist-info
drwxrwxr-x  2 marc marc    4096 Jun  9 16:36 numpy.libs
drwxrwxr-x 16 marc marc    4096 Jun  9 16:36 pandas
drwxrwxr-x  2 marc marc    4096 Jun  9 16:36 pandas-2.3.0.dist-info
drwxrwxr-x  3 marc marc    4096 Jun  9 16:36 peewee-3.18.1.dist-info
-rw-rw-r--  1 marc marc  281978 Jun  9 16:36 peewee.py
drwxrwxr-x  5 marc marc    4096 Jun  9 16:24 pip
drwxrwxr-x  3 marc marc    4096 Jun  9 16:24 pip-25.1.1.dist-info
drwxrwxr-x  3 marc marc    4096 Jun  9 16:36 platformdirs
drwxrwxr-x  3 marc marc    4096 Jun  9 16:36 platformdirs-4.3.8.dist-info
drwxrwxr-x  3 marc marc    4096 Jun  9 16:36 playhouse
drwxrwxr-x  2 marc marc    4096 Jun  9 16:36 protobuf-6.31.1.dist-info
-rw-rw-r--  1 marc marc    8193 Jun  9 16:36 pwiz.py
drwxrwxr-x  2 marc marc    4096 Jun  9 16:36 __pycache__
drwxrwxr-x  4 marc marc    4096 Jun  9 16:36 pycparser
drwxrwxr-x  2 marc marc    4096 Jun  9 16:36 pycparser-2.22.dist-info
drwxrwxr-x  2 marc marc    4096 Jun  9 16:36
python_dateutil-2.9.0.post0.dist-info
drwxrwxr-x  4 marc marc    4096 Jun  9 16:36 pytz
drwxrwxr-x  2 marc marc    4096 Jun  9 16:36 pytz-2025.2.dist-info
drwxrwxr-x  3 marc marc    4096 Jun  9 16:36 requests
drwxrwxr-x  3 marc marc    4096 Jun  9 16:36 requests-2.32.4.dist-info
drwxrwxr-x  2 marc marc    4096 Jun  9 16:36 six-1.17.0.dist-info
-rw-rw-r--  1 marc marc   34703 Jun  9 16:36 six.py
drwxrwxr-x  3 marc marc    4096 Jun  9 16:36 soupsieve
drwxrwxr-x  3 marc marc    4096 Jun  9 16:36 soupsieve-2.7.dist-info
drwxrwxr-x  3 marc marc    4096 Jun  9 16:36
typing_extensions-4.14.0.dist-info
-rw-rw-r--  1 marc marc  157143 Jun  9 16:36 typing_extensions.py
drwxrwxr-x  4 marc marc    4096 Jun  9 16:36 tzdata
drwxrwxr-x  3 marc marc    4096 Jun  9 16:36 tzdata-2025.2.dist-info
drwxrwxr-x  6 marc marc    4096 Jun  9 16:36 urllib3
drwxrwxr-x  3 marc marc    4096 Jun  9 16:36 urllib3-2.4.0.dist-info
drwxrwxr-x  7 marc marc    4096 Jun  9 16:36 websockets
drwxrwxr-x  2 marc marc    4096 Jun  9 16:36 websockets-15.0.1.dist-info
drwxrwxr-x  6 marc marc    4096 Jun  9 16:36 yfinance
drwxrwxr-x  3 marc marc    4096 Jun  9 16:36 yfinance-0.2.62.dist-info
                        -------
Total:  (55 Files)      1801857


What am I doing wrong?  It seems like everything should be working, now,
but it isn't.

Marc