sheepsqueezers
sheepsqueezers

Reputation: 89

Python Re-packaging an Existing Package for Distribution

I'm using Python 3.6.3 on Windows 7 Enterprise and when I tried to pip install the Python package "bitarray", the output indicated the need for Microsoft Visual C++ Build Tools. I downloaded and installed the build tools and installed bitarray with no problems.

Here's where the problem comes in: I now need to distribute bitarray to other employees within the company who don't have Microsoft Visual C++ Build Tools installed, but do have Python installed (and can use pip).

Can I just simply "re-package" the bitarray folder in "C:\Python363\Lib\site-packages\bitarray" (which contains the already compiled .pyd file) and just make it a local package? This way I can use pip with "file:///" to pull down a local copy of the package without the need for the build tools step?

Also, do I need to incorporate the information in the folder "C:\Python363\Lib\site-packages\bitarray-0.8.1.dist-info" to re-package?

Thanks in advance for any help!!!! Scott

Upvotes: 3

Views: 209

Answers (1)

hoefling
hoefling

Reputation: 66531

Instead of trying to work around the already installed package, why not building a distribution from source yourself? After all, you've already done the hardest part setting up the C compiler, the rest is just a sequence of commands you have to type. This is what you can do:

  1. Clone bitarray's repository:

    $ git clone https://github.com/ilanschnell/bitarray
    
  2. Navigate into the cloned repository:

    $ cd bitarray
    
  3. Checkout the version tag you want to build (the latest one is 0.8.1):

    $ git checkout 0.8.1
    
  4. Ensure you have wheel installed to be able to build a static wheel:

    $ pip install wheel
    
  5. Build the static wheel:

    $ python setup.py bdist_wheel
    
  6. A new directory dist was created in the current one, check what's inside:

    $ ls dist
    bitarray-0.8.1-cp36-cp36m-macosx_10_6_intel.whl
    

    (Note: This is what I would enter on my system, list the directory with dir on Windows, also your file should be either bitarray-0.8.1-cp36-cp36m-win_amd64.whl if you are building on a 64 bit system, or bitarray-0.8.1-cp36-cp36m-win32.whl on a 32 bit one).

Now you have built a static wheel that contains the C extensions compiled for Python 3.6 on Windows. It can be installed on Windows without needing to setup the C compiler on the target machine. Just enter

$ pip install bitarray-0.8.1-cp36-cp36m-win_amd64.whl

Note, however, that this wheel file can be installed only on Windows and only with Python 3.6. Should you need to provide a wheel for another setup (like Python 3.5 on Windows 32 bit), you would need to build another wheel file using the correct Python version on a correct target system, but the steps would be just the same.

Building without Git

If you don't have Git installed and you can't/don't want to install it, just download the zipped repository from Github, unzip it, navigate to the extracted directory and perform steps 4-6.

Upvotes: 2

Related Questions