hi,

so after reading
http://docs.python.org/c-api/init.html#PySys_SetArgvEx and the source
code for _PythonVM_init i figured it out

I have to do:

PythonVM.start("/dvt/workspace/montysolr/src/python/montysolr");

and the sys.path then contains the parent folder (above montysolr) and
i can then set more things by loading some boostrap module

but something like
http://docs.python.org/c-api/veryhigh.html#PyRun_SimpleString would be
much more flexible. Is it something that could be added? I can prepare
a patch (as it seems really trivial my knowledge might be sufficient
for this :))

roman

On Mon, Nov 14, 2011 at 1:12 PM, Roman Chyla <roman.ch...@gmail.com> wrote:
> On Mon, Nov 14, 2011 at 4:25 AM, Andi Vajda <va...@apache.org> wrote:
>>
>> On Sun, 13 Nov 2011, Roman Chyla wrote:
>>
>>> I am using JCC to run Python inside Java. For unittest, I'd like to
>>> set PYTHONPATH environment variable programmatically. I can change env
>>> vars inside Java (using
>>>
>>> http://stackoverflow.com/questions/318239/how-do-i-set-environment-variables-from-java)
>>> and System.getenv("PYTHONPATH") shows correct values
>>>
>>> However, I am still getting "ImportError: no module named...."
>>>
>>> If I set PYTHONPATH before starting unittest, it works fine
>>>
>>> Is it possible what I would like to do?
>>
>> Why mess with the environment instead of setting sys.path directly instead ?
>
> That would be great, but I don't know how. I am doing roughly this:
>
> PythonVM.start(programName)
> vm = PythonVM.get()
> vm.instantiate(moduleName, className);
>
> I tried also:
> PythonVM.start(programName, new String[]{"-c", "import
> sys;sys.path.insert(0, \'/dvt/workspace/montysolr/src/python\'"});
>
> it is failing on vm.instantiate.... when Python cannot find the module
>
>>
>>> Alternatively, if JCC could execute/eval python string, I could set
>>> sys.argv that way
>>
>> I'm not sure what you mean here but JCC's Java PythonVM.init() method takes
>> an array of strings that is fed into sys.argv. See _PythonVM_Init() sources
>> in jcc.cpp for details.
>
> sorry, i meant sys.path, not sys.argv
>
> roman
>
>>
>> Andi..
>>
>

Reply via email to