본문 바로가기

Dev/JAVA

java-jython 오류 - No module named site

728x90
반응형

파이썬으로 개발한 프로그램을 자바에서 실행시켜 보려고 한다. 

검색을 해서 찾아 보니 Jython을 사용하면 사용이 가능하다는 글을 봄.

 

jython을 알고 싶으면 아래의 URL을 참고

https://www.jython.org/

 

Home

The Python runtime on the JVM

www.jython.org

나는 메이븐을 통해서 라이브러리를 다운 받음.

https://mvnrepository.com/artifact/org.python/jython/2.7.2

 

Maven Repository: org.python » jython » 2.7.2

Jython is an implementation of the high-level, dynamic, object-oriented language Python written in 100% Pure Java, and seamlessly integrated with the Java platform. It thus allows you to run Python on any Java platform. org.python jython 2.7.2 // https://m

mvnrepository.com

 

라이브러리 연결 후 

 

테스트를 위해 소스를 입력해보았다.

import org.python.util.PythonInterpreter;

public class javaPythonTest {

	private static PythonInterpreter interpreter;
	
	public static void main(String args[]){		
		interpreter = new PythonInterpreter();
		interpreter.exec("from java.lang import System");
		interpreter.exec("s = 'Hello World'");
		interpreter.exec("System.out.println(s)");
		interpreter.exec("print(s)");
		interpreter.exec("print(s[1:-1])");
	}
}

실행시켰더니 에러가 발생 ㅜ.ㅜ

 

ImportError: Cannot import site module and its dependencies: No module named site

Exception in thread "main" ImportError: Cannot import site module and its dependencies: No module named site
Determine if the following attributes are correct:
  * sys.path: [C:\Users\xxxx\.m2\repository\org\python\jython\2.7.2\Lib, __classpath__, __pyclasspath__/]
    This attribute might be including the wrong directories, such as from CPython
  * sys.prefix: C:\Users\xxxx\.m2\repository\org\python\jython\2.7.2
    This attribute is set by the system property python.home, although it can
    be often automatically determined by the location of the Jython jar file

You can use the -S option or python.import.site=false to not import the site module

모듈을 읽었을때 site 이부분이 문제 인거 같다.

 

해경 방법은 

import org.python.util.PythonInterpreter;

public class javaPythonTest {

	private static PythonInterpreter interpreter;
	
	public static void main(String args[]){		
		System.setProperty("python.import.site", "false");
		interpreter = new PythonInterpreter();
		interpreter.exec("from java.lang import System");
		interpreter.exec("s = 'Hello World'");
		interpreter.exec("System.out.println(s)");
		interpreter.exec("print(s)");
		interpreter.exec("print(s[1:-1])");
	}
}

System Property에 오류난 내용을 입력하니. 동작이 된다.

 

아.. 리턴 받아서 처리 하는 부분을 해봐야 겠다.

728x90
반응형

'Dev > JAVA' 카테고리의 다른 글

공공데이터 API 요청시 SERVICE ERROR  (0) 2023.12.27
[JAVA] URL 파라메터 분리(Feat.get)  (0) 2021.02.05
JAVA 접근 제한자  (0) 2020.08.02
JAVA - 키보드 입력  (0) 2020.07.26
JAVA-String 숫자여부 Check  (0) 2020.07.24