I have a package that's hosted in my VCS. I run:
$ pip install -vvv git+https://myvcs.com/myprotos
Here is the log. You'll notice it runs a custom script in the middle of installing which actually builds the source files in the project. See this question for details of what it's doing.
Collecting git+https://myvcs.com/myprotos
Cloning https://myvcs.com/myprotos to /private/var/folders/3t/4qwkfyr903d0b7db7by2kj6r0000gn/T/pip-cFzP3I-build
Running command git clone -q https://myvcs.com/myprotos /private/var/folders/3t/4qwkfyr903d0b7db7by2kj6r0000gn/T/pip-cFzP3I-build
Running setup.py (path:/private/var/folders/3t/4qwkfyr903d0b7db7by2kj6r0000gn/T/pip-cFzP3I-build/setup.py) egg_info for package from git+https://myvcs.com/myprotos
Running command python setup.py egg_info
running egg_info
creating pip-egg-info/myprotos.egg-info
writing pip-egg-info/myprotos.egg-info/PKG-INFO
writing top-level names to pip-egg-info/myprotos.egg-info/top_level.txt
writing dependency_links to pip-egg-info/myprotos.egg-info/dependency_links.txt
writing manifest file 'pip-egg-info/myprotos.egg-info/SOURCES.txt'
reading manifest file 'pip-egg-info/myprotos.egg-info/SOURCES.txt'
writing manifest file 'pip-egg-info/myprotos.egg-info/SOURCES.txt'
Source in /private/var/folders/3t/4qwkfyr903d0b7db7by2kj6r0000gn/T/pip-cFzP3I-build has version 0.0.1, which satisfies requirement myprotos==0.0.1 from git+https://myvcs.com/myprotos
Installing collected packages: myprotos
Running setup.py install for myprotos: started
Running command /usr/local/opt/python/bin/python2.7 -u -c "import setuptools, tokenize;__file__='/private/var/folders/3t/4qwkfyr903d0b7db7by2kj6r0000gn/T/pip-cFzP3I-build/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /var/folders/3t/4qwkfyr903d0b7db7by2kj6r0000gn/T/pip-M03grb-record/install-record.txt --single-version-externally-managed --compile
running install
Grabbing github.com/google/protobuf...
Building Python protos...
running build
running install_egg_info
running egg_info
creating myprotos.egg-info
writing myprotos.egg-info/PKG-INFO
writing top-level names to myprotos.egg-info/top_level.txt
writing dependency_links to myprotos.egg-info/dependency_links.txt
writing manifest file 'myprotos.egg-info/SOURCES.txt'
reading manifest file 'myprotos.egg-info/SOURCES.txt'
writing manifest file 'myprotos.egg-info/SOURCES.txt'
Copying myprotos.egg-info to /usr/local/lib/python2.7/site-packages/myprotos-0.0.1-py2.7.egg-info
running install_scripts
writing list of installed files to '/var/folders/3t/4qwkfyr903d0b7db7by2kj6r0000gn/T/pip-M03grb-record/install-record.txt'
Running setup.py install for myprotos: finished with status 'done'
Removing source in /private/var/folders/3t/4qwkfyr903d0b7db7by2kj6r0000gn/T/pip-cFzP3I-build
Successfully installed myprotos-0.0.1
Cleaning up...
So that all seems to install successfully. Even running pip list
outputs:
$ pip list
.
.
.
myprotos (0.0.1)
.
.
.
However it throws an ImportError if I try to import the package.
$ python
Python 2.7.13 (default, Jul 18 2017, 09:17:00)
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import myprotos
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named myprotos
What could be going on here? Is it likely by build script fails on installation or is my package definition wrong or what could it be?
The name of the egg is not necessarily the same as the name of the module or package it provides. In fact, it's quite common that these names are different. One egg can contain multiple packages, so it's not possible in general to use the same name. Moreover, an egg name can contain dashes and other characters that are not allowed in a Python module name.
The myprotos.egg-info
directory in your Python site-packages
directory should contain a file called top_level.txt
that lists all top-level modules and packages the egg exports.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With