Python: объект exec-кода в специальной среде

#python #c

#python #c

Вопрос:

вот код, который я хочу изменить LD_LIBRARY_PATH на exec код:

 #!/usr/bin/python
import os

code='''
import os
print os.getenv("LD_LIBRARY_PATH");
import wrap
'''

os.environ['LD_LIBRARY_PATH'] = '/home/dma/python'
os.environ["PYTHONPATH"] = '/home/dma/python'

exec code
  

Результатом является:

 /home/dma/python
Traceback (most recent call last):
  File "./test.py", line 13, in ?
    exec code
  File "<string>", line 4, in ?
ImportError: example.so: cannot open shared object file: No such file or directory
  

ПРИМЕЧАНИЕ: test.py зависеть от wrap.so , wrap.so зависеть от example.so

Есть ли какой-нибудь способ выполнить объект code в специальной среде?

Спасибо Dma

Комментарии:

1. и где находится example.so находится?

2. [dma@amd64 ~/python]$ ls example.c пример.o example.so test.py обернуть.c обернуть.o wrap.so [dma@amd64 ~/python]$ pwd /home/dma/python

3. но почему вопрос помечен c, если вам нужен код на python?

4. речь идет об обмене Python / C.

Ответ №1:

Кажется, что его example.so нет в /home/dma/python .

Комментарии:

1. он находится в /home/dma / python. Я проверил.

2. Я импортирую «wrap» (будет загружаться «wrap.so » в ‘.’), которые зависят от ‘example.so ‘

Ответ №2:

Я использую popen2 для решения этой проблемы. Это работает, у кого-нибудь есть способ получше?