Problem with PYTHONPATH while running tests
Blair Zajac
blair at orcaware.com
Sat Nov 5 17:16:09 PDT 2011
On Nov 5, 2011, at 12:01 PM, Simon Newton wrote:
> On Sat, Nov 5, 2011 at 11:50 AM, Blair Zajac <blair at orcaware.com> wrote:
>>
>> On Nov 5, 2011, at 11:39 AM, Simon Newton wrote:
>>
>>> Hi,
>>>
>>> I have a port, with a python27 variant that depends on
>>> protobuf-python27. I've noticed however that when running the test
>>> phase, PYTHONPATH doesn't include the install location of
>>> protobuf-python27
>>> (/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
>>> on my system) so the tests fail.
>>>
>>> I believe I need to use
>>>
>>> test.env-append PYTHONPATH=${PATH_TO_DEP_INSTALL_LOCATION}
>>>
>>> but I don't know how to get the install location of a dependency from
>>> within a port file.
>>>
>>> Any hints?
>>
>> If protobuf-python27 is successfully installed then it shouldn't need PYTHONPATH set up.
>>
>> Could the test be picking up Apple's python 2.7 from /usr/bin instead of from $prefix/bin?
>>
>> Can you from the command line do this:
>>
>> $ python
>> Python 2.7.2 (default, Aug 23 2011, 21:00:36)
>> [GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
>> Type "help", "copyright", "credits" or "license" for more information.
>> Setting tab completion.
>>>>> import google.protobuf
>>>>> google.protobuf
>> <module 'google.protobuf' from '/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/google/protobuf/__init__.pyc'>
>
>
> That appears to be what is happening:
>
> $ which python
> /usr/bin/python
>
>
> $ python
> Python 2.6.1 (r261:67515, Aug 2 2010, 20:10:18)
> [GCC 4.2.1 (Apple Inc. build 5646)] on darwin
> Type "help", "copyright", "credits" or "license" for more information.
>>>> import google.protobuf
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> ImportError: No module named google.protobuf
>
> $ port list installed | grep protobuf
> protobuf-cpp @2.4.1 devel/protobuf-cpp
> protobuf-python26 @2.4.1 devel/protobuf-python26
> protobuf-python27 @2.4.1 devel/protobuf-python27
>
>
> If I change the #! line to point to /opt/local/bin/python2.7 the tests
> work correctly.
Great!
I suggest updating the Portfile to explicitly run the unit test using ${prefix}/bin/python2.7 instead of modifying the #! line, it's easier that way as it doesn't require modifying the source.
Blair
More information about the macports-dev
mailing list