www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - unable to link to python3.7m using pyd and conda

reply Cesar <cesar.rdz.v gmail.com> writes:
Hi,

I am trying to get started using pyd with 
https://github.com/Superbelko/pyd-min as an example and I am 
getting an error from the linker:

     minpyd ~master: building configuration "application"...
     Linking...
     /usr/bin/ld: cannot find -lpython3.7m
     collect2: error: ld returned 1 exit status
     Error: linker exited with status 1
     dmd failed with exit code 1.


I did not modify anything from that sample code. This is a 
proof-of-concept and then I would move to a larger D project and 
Python library which uses a specific conda environment.

If I take out the pyd subConfiguration from dub.json, the build 
succeeds but then it picks up my system-wide python 2.7.

Does anyone know how I can indicate the linker where to look for 
python3.7m? How can I configure pyd to use python from my conda 
environment? As a small note, I am quite new to D, so I may have 
missed something obvious.

Best regards
Cesar
Sep 26 2019
parent Cesar <cesar.rdz.v gmail.com> writes:
On Thursday, 26 September 2019 at 13:29:09 UTC, Cesar wrote:
 Hi,

 I am trying to get started using pyd with 
 https://github.com/Superbelko/pyd-min as an example and I am 
 getting an error from the linker:

     minpyd ~master: building configuration "application"...
     Linking...
     /usr/bin/ld: cannot find -lpython3.7m
     collect2: error: ld returned 1 exit status
     Error: linker exited with status 1
     dmd failed with exit code 1.


 I did not modify anything from that sample code. This is a 
 proof-of-concept and then I would move to a larger D project 
 and Python library which uses a specific conda environment.

 If I take out the pyd subConfiguration from dub.json, the build 
 succeeds but then it picks up my system-wide python 2.7.

 Does anyone know how I can indicate the linker where to look 
 for python3.7m? How can I configure pyd to use python from my 
 conda environment? As a small note, I am quite new to D, so I 
 may have missed something obvious.

 Best regards
 Cesar
I found what was wrong. The pyd subConfiguration of python37 was looking for my system-wide python37, which I did not have. To use the conda python, I ran the script from https://github.com/ariovistus/pyd/blob/master/setup/pyd_set_env_vars.sh: pyd_set_env_vars.sh <my_conda_python> And used subConfiguration "pyd": "env". When I did that, I got a runtime error about the libraries not being found, so then I added the flag LD_LIBRARY_PATH when running the executable: LD_LIBRARY_PATH=~/miniconda3/envs/MYENV/lib ./executable I still need to figure out how to move this flag into dub.son but for now it is working. Hope this helps out in case someone has the same problem. Cesar
Sep 26 2019