Installing with distutils

Now that we've got our setup.py, we can use it to do a number of interesting things. The first, and perhaps most obvious, thing we can do is install our module into our virtual environment! We do this by passing the install argument to setup.py:

(palindrome_env)$ python setup.py install
running install
running build
running build_py
copying palindrome.py -> build/lib
running install_lib
copying build/lib/palindrome.py -> /Users/sixty_north/examples/palindrome/palindrome_env/lib/python3.5/site-packages
byte-compiling /Users/sixty_north/examples/palindrome/palindrome_env/lib/python3.5/site-packages/palindrome.py to palindrome.cpython-35.pyc
running install_egg_info
Writing /Users/sixty_north/examples/palindrome/palindrome_env/lib/python3.5/site-packages/palindrome-1.0-py3.5.egg-info

When invoked setup() prints out a few lines to tell you about its progress. The most important line for us is where is actually copies palindrome.py into the installation folder:

copying build/lib/palindrome.py -> /Users/sixty_north/examples/palindrome/palindrome_env/lib/python3.5/site-packages

The site-packages directory of a Python installation is where third-party packages such as ours are normally installed. So it looks like the installation worked properly.

Let's verify this by running Python and seeing that our module can be imported. Note that we want to change directories before we do this, otherwise when we import palindrome Python will simply load the source file in our current directory:

(palindrome_env)$ cd ..
(palindrome_env)$ python
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 26 2016, 10:47:25)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import palindrome
>>> palindrome.__file__
'/Users/sixty_north/examples/palindrome/palindrome_env/lib/python3.5/site-packages/palindrome.py'

Here we use the __file__ attribute on the module to see where it was imported from, and we see that we're importing it from our virtual environment's site-packages, which is exactly what we wanted.

Don't forget to switch back to your source directory after exiting the Python REPL:

(palindrome_env)$ cd palindrome
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset