提交 82f8304f 编写于 作者: Y Yu Yang

Merge branch 'feature/fast_python_unittest' into feature/change_op_creation

...@@ -55,6 +55,7 @@ option(WITH_C_API "Compile PaddlePaddle with C-API(Prediction)" OFF) ...@@ -55,6 +55,7 @@ option(WITH_C_API "Compile PaddlePaddle with C-API(Prediction)" OFF)
option(WITH_GOLANG "Compile PaddlePaddle with GOLANG" OFF) option(WITH_GOLANG "Compile PaddlePaddle with GOLANG" OFF)
option(GLIDE_INSTALL "Download and install go dependencies " ON) option(GLIDE_INSTALL "Download and install go dependencies " ON)
option(USE_NNPACK "Compile PaddlePaddle with NNPACK library" OFF) option(USE_NNPACK "Compile PaddlePaddle with NNPACK library" OFF)
option(UNITTEST_USE_VIRTUALENV "Python unittest with virtualenv" ON)
# CMAKE_BUILD_TYPE # CMAKE_BUILD_TYPE
if(NOT CMAKE_BUILD_TYPE) if(NOT CMAKE_BUILD_TYPE)
......
...@@ -24,7 +24,6 @@ IF(WITH_PYTHON) ...@@ -24,7 +24,6 @@ IF(WITH_PYTHON)
ENDIF(WITH_PYTHON) ENDIF(WITH_PYTHON)
SET(py_env "") SET(py_env "")
SET(USE_VIRTUALENV_FOR_TEST 1)
IF(PYTHONINTERP_FOUND) IF(PYTHONINTERP_FOUND)
find_python_module(pip REQUIRED) find_python_module(pip REQUIRED)
find_python_module(numpy REQUIRED) find_python_module(numpy REQUIRED)
......
...@@ -150,9 +150,19 @@ endfunction() ...@@ -150,9 +150,19 @@ endfunction()
# Create a python unittest using run_python_tests.sh, # Create a python unittest using run_python_tests.sh,
# which takes care of making correct running environment # which takes care of making correct running environment
function(add_python_test TEST_NAME) function(add_python_test TEST_NAME)
if (UNITTEST_USE_VIRTUALENV)
add_test(NAME ${TEST_NAME} add_test(NAME ${TEST_NAME}
COMMAND env PADDLE_PACKAGE_DIR=${PADDLE_PYTHON_PACKAGE_DIR} COMMAND env PADDLE_PACKAGE_DIR=${PADDLE_PYTHON_PACKAGE_DIR}
bash ${PROJ_ROOT}/paddle/scripts/run_python_tests.sh bash ${PROJ_ROOT}/paddle/scripts/run_python_tests.sh ${ARGN}
${USE_VIRTUALENV_FOR_TEST} ${PYTHON_EXECUTABLE} ${ARGN}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
else()
foreach(arg ${ARGN})
get_filename_component(py_fn ${arg} NAME_WE)
set(TRG_NAME ${TEST_NAME}_${py_fn})
add_test(NAME ${TRG_NAME}
COMMAND env PYTHONPATH=${PADDLE_PYTHON_PACKAGE_DIR}
python2 ${arg}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
endforeach()
endif()
endfunction() endfunction()
...@@ -21,22 +21,15 @@ ...@@ -21,22 +21,15 @@
# #
# It same as PYTHONPATH=${YOUR_PYTHON_PATH}:$PYTHONPATH {exec...} # It same as PYTHONPATH=${YOUR_PYTHON_PATH}:$PYTHONPATH {exec...}
# #
PYPATH=""
if ! python -c "import paddle" >/dev/null 2>/dev/null; then set -x
PYPATH="" while getopts "d:" opt; do
set -x
while getopts "d:" opt; do
case $opt in case $opt in
d) d)
PYPATH=$OPTARG PYPATH=$OPTARG
;; ;;
esac esac
done done
shift $(($OPTIND - 1)) shift $(($OPTIND - 1))
export PYTHONPATH=$PYPATH:$PYTHONPATH export PYTHONPATH=$PYPATH:$PYTHONPATH
$@ $@
else
echo "paddle package is already in your PYTHONPATH. But unittest need a clean environment."
echo "Please uninstall paddle package before start unittest. Try to 'pip uninstall paddle'"
exit 1
fi
...@@ -49,29 +49,27 @@ cmake .. \ ...@@ -49,29 +49,27 @@ cmake .. \
-DCUDNN_ROOT=/usr/ \ -DCUDNN_ROOT=/usr/ \
-DWITH_STYLE_CHECK=${WITH_STYLE_CHECK:-OFF} \ -DWITH_STYLE_CHECK=${WITH_STYLE_CHECK:-OFF} \
-DWITH_TESTING=${WITH_TESTING:-OFF} \ -DWITH_TESTING=${WITH_TESTING:-OFF} \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DUNITTEST_USE_VIRTUALENV=OFF
cat <<EOF cat <<EOF
======================================== ============================================
Building in /paddle/build ... Building and installing in /paddle/build ...
Build unit tests: ${WITH_TESTING:-OFF} Build unit tests: ${WITH_TESTING:-OFF}
======================================== ============================================
EOF EOF
make -j `nproc` make install -j `nproc`
if [ ${WITH_TESTING:-OFF} == "ON" ] && [ ${RUN_TEST:-OFF} == "ON" ] ; then pip install /usr/local/opt/paddle/share/wheels/*.whl
pip uninstall -y py-paddle paddle || true paddle version
ctest --output-on-failure
fi
if [ ${WITH_TESTING:-OFF} == "ON" ] && [ ${RUN_TEST:-OFF} == "ON" ] ; then
cat <<EOF cat <<EOF
======================================== ========================================
Installing ... Running unit tests ...
======================================== ========================================
EOF EOF
make install -j `nproc` ctest --output-on-failure
pip install /usr/local/opt/paddle/share/wheels/*.whl fi
paddle version
# To build documentation, we need to run cmake again after installing # To build documentation, we need to run cmake again after installing
......
...@@ -18,17 +18,12 @@ pushd `dirname $0` > /dev/null ...@@ -18,17 +18,12 @@ pushd `dirname $0` > /dev/null
SCRIPTPATH=$PWD SCRIPTPATH=$PWD
popd > /dev/null popd > /dev/null
USE_VIRTUALENV_FOR_TEST=$1; shift rm -rf .test_env
PYTHON=$1; shift virtualenv .test_env
unset PYTHONHOME
if [ $USE_VIRTUALENV_FOR_TEST -ne 0 ]; then unset PYTHONPATH
rm -rf .test_env source .test_env/bin/activate
virtualenv .test_env PYTHON=python
unset PYTHONHOME
unset PYTHONPATH
source .test_env/bin/activate
PYTHON=python
fi
$PYTHON -m pip install $SCRIPTPATH/../dist/*.whl $PYTHON -m pip install $SCRIPTPATH/../dist/*.whl
...@@ -49,7 +44,5 @@ do ...@@ -49,7 +44,5 @@ do
fi fi
done done
if [ $USE_VIRTUALENV_FOR_TEST -ne 0 ]; then deactivate
deactivate rm -rf .test_env
rm -rf .test_env
fi
...@@ -22,7 +22,7 @@ setup(name="py_paddle", ...@@ -22,7 +22,7 @@ setup(name="py_paddle",
package_data={'py_paddle':['*.py','_swig_paddle.so']}, package_data={'py_paddle':['*.py','_swig_paddle.so']},
install_requires = [ install_requires = [
'nltk>=3.2.2', 'nltk>=3.2.2',
'numpy>=1.8.0', # The numpy is required. 'numpy>=1.12.0', # The numpy is required.
'protobuf==${PROTOBUF_VERSION}' # The paddle protobuf version 'protobuf==${PROTOBUF_VERSION}' # The paddle protobuf version
], ],
url='http://www.paddlepaddle.org/', url='http://www.paddlepaddle.org/',
......
...@@ -14,7 +14,7 @@ packages=['paddle', ...@@ -14,7 +14,7 @@ packages=['paddle',
'paddle.v2.framework.proto'] 'paddle.v2.framework.proto']
setup_requires=["requests", setup_requires=["requests",
"numpy", "numpy>=1.12",
"protobuf==3.1", "protobuf==3.1",
"recordio", "recordio",
"matplotlib", "matplotlib",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册